diff --git a/src/vs/workbench/api/common/extHostTypes.ts b/src/vs/workbench/api/common/extHostTypes.ts index bbe6819401705..76ba067a19539 100644 --- a/src/vs/workbench/api/common/extHostTypes.ts +++ b/src/vs/workbench/api/common/extHostTypes.ts @@ -2494,10 +2494,23 @@ export class TreeItem { checkboxState?: vscode.TreeItemCheckboxState; static isTreeItem(thing: any, extension: IExtensionDescription): thing is TreeItem { + const treeItemThing = thing as vscode.TreeItem2; + + if (treeItemThing.checkboxState !== undefined) { + checkProposedApiEnabled(extension, 'treeItemCheckbox'); + const checkbox = isNumber(treeItemThing.checkboxState) ? treeItemThing.checkboxState : + isObject(treeItemThing.checkboxState) && isNumber(treeItemThing.checkboxState.state) ? treeItemThing.checkboxState.state : undefined; + const tooltip = !isNumber(treeItemThing.checkboxState) && isObject(treeItemThing.checkboxState) ? treeItemThing.checkboxState.tooltip : undefined; + if (checkbox === undefined || (checkbox !== TreeItemCheckboxState.Checked && checkbox !== TreeItemCheckboxState.Unchecked) || (tooltip !== undefined && !isString(tooltip))) { + console.log('INVALID tree item, invalid checkboxState', treeItemThing.checkboxState); + return false; + } + } + if (thing instanceof TreeItem) { return true; } - const treeItemThing = thing as vscode.TreeItem2; + if (treeItemThing.label !== undefined && !isString(treeItemThing.label) && !(treeItemThing.label?.label)) { console.log('INVALID tree item, invalid label', treeItemThing.label); return false; @@ -2541,16 +2554,6 @@ export class TreeItem { console.log('INVALID tree item, invalid accessibilityInformation', treeItemThing.accessibilityInformation); return false; } - if (treeItemThing.checkboxState !== undefined) { - checkProposedApiEnabled(extension, 'treeItemCheckbox'); - const checkbox = isNumber(treeItemThing.checkboxState) ? treeItemThing.checkboxState : - isObject(treeItemThing.checkboxState) && isNumber(treeItemThing.checkboxState.state) ? treeItemThing.checkboxState.state : undefined; - const tooltip = !isNumber(treeItemThing.checkboxState) && isObject(treeItemThing.checkboxState) ? treeItemThing.checkboxState.tooltip : undefined; - if (checkbox === undefined || (checkbox !== TreeItemCheckboxState.Checked && checkbox !== TreeItemCheckboxState.Unchecked) || (tooltip !== undefined && !isString(tooltip))) { - console.log('INVALID tree item, invalid checkboxState', treeItemThing.checkboxState); - return false; - } - } return true; }