diff --git a/src/vs/workbench/api/common/menusExtensionPoint.ts b/src/vs/workbench/api/common/menusExtensionPoint.ts index a1965841d7b..c195c8b0af0 100644 --- a/src/vs/workbench/api/common/menusExtensionPoint.ts +++ b/src/vs/workbench/api/common/menusExtensionPoint.ts @@ -49,6 +49,15 @@ namespace schema { return undefined; } + export function isProposedAPI(menuId: MenuId): boolean { + switch (menuId) { + case MenuId.StatusBarWindowIndicatorMenu: + case MenuId.MenubarFileMenu: + return true; + } + return false; + } + export function isValidMenuItems(menu: IUserFriendlyMenuItem[], collector: ExtensionMessageCollector): boolean { if (!Array.isArray(menu)) { collector.error(localize('requirearray', "menu items must be an array")); @@ -359,6 +368,11 @@ ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: schema.IUserFriendlyM return; } + if (schema.isProposedAPI(menu) && !extension.description.enableProposedApi) { + collector.error(localize('proposedAPI.invalid', "{0} is a proposed menu identifierand is only available when running out of dev or with the following command line switch: --enable-proposed-api ${extension.identifier.value}", menu)); + return; + } + for (let item of entry.value) { let command = MenuRegistry.getCommand(item.command); let alt = item.alt && MenuRegistry.getCommand(item.alt);