add runtime submenu support validation

This commit is contained in:
João Moreno
2020-07-17 15:34:12 +02:00
parent 16ce08bfa6
commit 6584270727

View File

@@ -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) {