diff --git a/src/vs/workbench/api/common/menusExtensionPoint.ts b/src/vs/workbench/api/common/menusExtensionPoint.ts index 74a99066808..21f87bbc961 100644 --- a/src/vs/workbench/api/common/menusExtensionPoint.ts +++ b/src/vs/workbench/api/common/menusExtensionPoint.ts @@ -81,6 +81,14 @@ namespace schema { return false; } + export function supportsSubmenus(menuId: MenuId): boolean { + switch (menuId) { + case MenuId.EditorContext: + return true; + } + return false; + } + export function isMenuItem(item: IUserFriendlyMenuItem | IUserFriendlySubmenuItem): item is IUserFriendlyMenuItem { return typeof (item as IUserFriendlyMenuItem).command === 'string'; } @@ -626,6 +634,8 @@ menusExtensionPoint.setHandler(extensions => { return; } + const submenuSupport = schema.supportsSubmenus(id); + for (const menuItem of entry.value) { let item: IMenuItem | ISubmenuItem; @@ -651,6 +661,11 @@ menusExtensionPoint.setHandler(extensions => { continue; } + if (!submenuSupport) { + collector.error(localize('proposedAPI.unsupported.submenureference', "Menu item references a submenu for a menu which doesn't have submenu support.")); + continue; + } + const submenu = _submenus.get(menuItem.submenu); if (!submenu) {