diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index b99d6d27d20..7376f291bcb 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7145,7 +7145,7 @@ module ts { } function getRootSymbol(symbol: Symbol) { - return (symbol.flags & SymbolFlags.Transient) ? getSymbolLinks(symbol).target : symbol; + return (symbol.flags & SymbolFlags.Transient) && getSymbolLinks(symbol).target || symbol; } // Emitter support diff --git a/src/services/services.ts b/src/services/services.ts index 7f4a3ff87ca..a34c670987d 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1592,7 +1592,6 @@ module ts { } var declarations = symbol.getDeclarations(); - var firstDeclaration = [0]; return { name: displayName, kind: getSymbolKind(symbol), @@ -1956,7 +1955,7 @@ module ts { } function getSymbolKind(symbol: Symbol): string { - var flags = symbol.getFlags(); + var flags = typeInfoResolver.getRootSymbol(symbol).getFlags(); if (flags & SymbolFlags.Module) return ScriptElementKind.moduleElement; if (flags & SymbolFlags.Class) return ScriptElementKind.classElement; diff --git a/tests/cases/fourslash/completionListOfGnericSymbol.ts b/tests/cases/fourslash/completionListOfGnericSymbol.ts new file mode 100644 index 00000000000..fd223b68ca2 --- /dev/null +++ b/tests/cases/fourslash/completionListOfGnericSymbol.ts @@ -0,0 +1,11 @@ +/// + +// Ensure kind is set correctelly on completions of a generic symbol + +////var a = [1,2,3]; +////a./**/ + +goTo.marker(); +verify.memberListContains('length', "number", /*docComments*/ undefined, /*fullSymbolName*/ undefined,/*kind*/ "property"); +verify.memberListContains('toString', "() => string", /*docComments*/ undefined, /*fullSymbolName*/ undefined,/*kind*/ "method"); +