From 9ddbdd0d9ef7793281b0b95ed126fa44ff94dc1a Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 30 May 2017 14:26:53 +0200 Subject: [PATCH] Fix #27530 --- src/vs/workbench/api/node/extHostTreeViews.ts | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/vs/workbench/api/node/extHostTreeViews.ts b/src/vs/workbench/api/node/extHostTreeViews.ts index 524c56baa5a..f050ea1df7f 100644 --- a/src/vs/workbench/api/node/extHostTreeViews.ts +++ b/src/vs/workbench/api/node/extHostTreeViews.ts @@ -130,25 +130,32 @@ class ExtHostTreeView extends Disposable { private processAndMapElements(elements: T[]): TPromise { const treeItemsPromises: TPromise[] = []; for (const element of elements) { - if (this.extChildrenElementsMap.has(element)) { - return TPromise.wrapError(localize('treeView.duplicateElement', 'Element {0} is already registered', element)); - } - const treeItem = this.massageTreeItem(this.dataProvider.getTreeItem(element)); - this.itemHandlesMap.set(element, treeItem.handle); - this.extElementsMap.set(treeItem.handle, element); - if (treeItem.collapsibleState === TreeItemCollapsibleState.Expanded) { - treeItemsPromises.push(this.getChildren(treeItem.handle).then(children => { - treeItem.children = children; - return treeItem; - })); - } else { - treeItemsPromises.push(TPromise.as(treeItem)); + if (element) { + if (this.extChildrenElementsMap.has(element)) { + return TPromise.wrapError(localize('treeView.duplicateElement', 'Element {0} is already registered', element)); + } + const treeItem = this.massageTreeItem(this.dataProvider.getTreeItem(element)); + if (treeItem) { + this.itemHandlesMap.set(element, treeItem.handle); + this.extElementsMap.set(treeItem.handle, element); + if (treeItem.collapsibleState === TreeItemCollapsibleState.Expanded) { + treeItemsPromises.push(this.getChildren(treeItem.handle).then(children => { + treeItem.children = children; + return treeItem; + })); + } else { + treeItemsPromises.push(TPromise.as(treeItem)); + } + } } } return TPromise.join(treeItemsPromises); } private massageTreeItem(extensionTreeItem: vscode.TreeItem): TreeItem { + if (!extensionTreeItem) { + return null; + } const icon = this.getLightIconPath(extensionTreeItem); return { handle: ++this._itemHandlePool,