From afb942262a3e2f570aaf418277b55163368c0f4e Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Mon, 9 Jul 2018 22:54:53 +0200 Subject: [PATCH] #48430 Skip optional dependents while disablement --- .../extensions/node/extensionsWorkbenchService.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index b16e2d50b9a..5c86ac1d497 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -702,7 +702,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, } private promptAndSetEnablement(extensions: IExtension[], enablementState: EnablementState): TPromise { - const allDependencies = this.getDependenciesRecursively(extensions, this.local, enablementState, []); + const allDependencies = this.getDependenciesRecursively(extensions, this.local, enablementState); if (allDependencies.length > 0) { if (enablementState === EnablementState.Enabled || enablementState === EnablementState.WorkspaceEnabled) { return this.promptForDependenciesAndEnable(extensions, allDependencies, enablementState); @@ -761,7 +761,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, return TPromise.join(allExtensions.map(e => this.doSetEnablement(e, enablementState))); } - private getDependenciesRecursively(extensions: IExtension[], installed: IExtension[], enablementState: EnablementState, checked: IExtension[]): IExtension[] { + private getDependenciesRecursively(extensions: IExtension[], installed: IExtension[], enablementState: EnablementState, checked: IExtension[] = []): IExtension[] { const toCheck = extensions.filter(e => checked.indexOf(e) === -1); if (toCheck.length) { for (const extension of toCheck) { @@ -798,12 +798,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService, if (extensionsToDisable.indexOf(i) !== -1) { return false; } - return i.dependencies.some(dep => { - if (extension.id === dep.id) { - return true; - } - return extensionsToDisable.some(d => d.id === dep.id); - }); + return i.dependencies.some(dep => !dep.optional && [extension, ...extensionsToDisable].some(d => d.id === dep.id)); }); } -- GitLab