@@ -9,7 +9,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
99import { mixin } from 'vs/base/common/objects' ;
1010import * as vscode from 'vscode' ;
1111import * as typeConvert from 'vs/workbench/api/node/extHostTypeConverters' ;
12- import { Range , Disposable , CompletionList , SnippetString , CodeActionKind , HierarchicalSymbolInformation } from 'vs/workbench/api/node/extHostTypes' ;
12+ import { Range , Disposable , CompletionList , SnippetString , CodeActionKind , HierarchicalSymbolInformation , SymbolInformation } from 'vs/workbench/api/node/extHostTypes' ;
1313import { ISingleEditOperation } from 'vs/editor/common/model' ;
1414import * as modes from 'vs/editor/common/modes' ;
1515import { ExtHostHeapService } from 'vs/workbench/api/node/extHostHeapService' ;
@@ -39,13 +39,15 @@ class OutlineAdapter {
3939 provideDocumentSymbols ( resource : URI ) : TPromise < SymbolInformationDto [ ] > {
4040 let doc = this . _documents . getDocumentData ( resource ) . document ;
4141 return asWinJsPromise ( token => this . _provider . provideDocumentSymbols ( doc , token ) ) . then ( value => {
42- if ( value instanceof HierarchicalSymbolInformation ) {
43- return [ typeConvert . HierarchicalSymbolInformation . from ( value ) ] ;
42+ if ( isFalsyOrEmpty ( value ) ) {
43+ return undefined ;
4444 }
45- if ( Array . isArray ( value ) ) {
46- return value . map ( typeConvert . SymbolInformation . from ) ;
45+ let [ probe ] = value ;
46+ if ( probe instanceof HierarchicalSymbolInformation ) {
47+ return ( < HierarchicalSymbolInformation [ ] > value ) . map ( typeConvert . HierarchicalSymbolInformation . from ) ;
48+ } else {
49+ return ( < SymbolInformation [ ] > value ) . map ( typeConvert . SymbolInformation . from ) ;
4750 }
48- return undefined ;
4951 } ) ;
5052 }
5153}
0 commit comments