From 130aa96b42113e4ff008ed53ce0e396891bd4090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 4 Nov 2020 13:31:08 +0100 Subject: [PATCH] add to #109818 --- .../workbench/api/common/menusExtensionPoint.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/vs/workbench/api/common/menusExtensionPoint.ts b/src/vs/workbench/api/common/menusExtensionPoint.ts index 92a1a78b923..cabc822e35a 100644 --- a/src/vs/workbench/api/common/menusExtensionPoint.ts +++ b/src/vs/workbench/api/common/menusExtensionPoint.ts @@ -620,6 +620,7 @@ submenusExtensionPoint.setHandler(extensions => { const _apiMenusByKey = new Map(Iterable.map(Iterable.from(apiMenus), menu => ([menu.key, menu]))); const _menuRegistrations = new DisposableStore(); +const _submenuMenuItems = new Map>(); const menusExtensionPoint = ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: (schema.IUserFriendlyMenuItem | schema.IUserFriendlySubmenuItem)[] }>({ extensionPoint: 'menus', @@ -631,6 +632,7 @@ menusExtensionPoint.setHandler(extensions => { // remove all previous menu registrations _menuRegistrations.clear(); + _submenuMenuItems.clear(); const items: { id: MenuId, item: IMenuItem | ISubmenuItem }[] = []; @@ -698,6 +700,20 @@ menusExtensionPoint.setHandler(extensions => { continue; } + let submenuRegistrations = _submenuMenuItems.get(menu.id.id); + + if (!submenuRegistrations) { + submenuRegistrations = new Set(); + _submenuMenuItems.set(menu.id.id, submenuRegistrations); + } + + if (submenuRegistrations.has(submenu.id.id)) { + collector.warn(localize('submenuItem.duplicate', "The `{0}` submenu was already contributed to the `{1}` menu.", menuItem.submenu, entry.key)); + continue; + } + + submenuRegistrations.add(submenu.id.id); + item = { submenu: submenu.id, icon: submenu.icon, title: submenu.label, group: undefined, order: undefined, when: undefined }; } -- GitLab