From c303fc0ab24be137d4e365a024ec69cefbdfe979 Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Tue, 18 Feb 2020 10:00:07 -0800 Subject: [PATCH] limit view ids globally --- src/vs/workbench/api/browser/viewsExtensionPoint.ts | 7 +++---- src/vs/workbench/common/views.ts | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/api/browser/viewsExtensionPoint.ts b/src/vs/workbench/api/browser/viewsExtensionPoint.ts index 905d9774677..4a0eea21689 100644 --- a/src/vs/workbench/api/browser/viewsExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsExtensionPoint.ts @@ -375,16 +375,15 @@ class ViewsExtensionHandler implements IWorkbenchContribution { collector.warn(localize('ViewContainerDoesnotExist', "View container '{0}' does not exist and all views registered to it will be added to 'Explorer'.", entry.key)); } const container = viewContainer || this.getDefaultViewContainer(); - const registeredViews = this.viewsRegistry.getViews(container); const viewIds: string[] = []; const viewDescriptors = coalesce(entry.value.map((item, index) => { // validate if (viewIds.indexOf(item.id) !== -1) { - collector.error(localize('duplicateView1', "Cannot register multiple views with same id `{0}` in the view container `{1}`", item.id, container.id)); + collector.error(localize('duplicateView1', "Cannot register multiple views with same id `{0}`", item.id)); return null; } - if (registeredViews.some(v => v.id === item.id)) { - collector.error(localize('duplicateView2', "A view with id `{0}` is already registered in the view container `{1}`", item.id, container.id)); + if (this.viewsRegistry.getView(item.id) !== null) { + collector.error(localize('duplicateView2', "A view with id `{0}` is already registered.", item.id)); return null; } diff --git a/src/vs/workbench/common/views.ts b/src/vs/workbench/common/views.ts index b171e8d1dcd..0cae0da27f6 100644 --- a/src/vs/workbench/common/views.ts +++ b/src/vs/workbench/common/views.ts @@ -336,8 +336,8 @@ class ViewsRegistry extends Disposable implements IViewsRegistry { this._viewContainers.push(viewContainer); } for (const viewDescriptor of viewDescriptors) { - if (views.some(v => v.id === viewDescriptor.id)) { - throw new Error(localize('duplicateId', "A view with id '{0}' is already registered in the container '{1}'", viewDescriptor.id, viewContainer.id)); + if (this.getView(viewDescriptor.id) !== null) { + throw new Error(localize('duplicateId', "A view with id '{0}' is already registered", viewDescriptor.id)); } views.push(viewDescriptor); }