From 885569d4e7e18260b0347f5892c0034248fae4da Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 10 Sep 2014 13:16:44 -0700 Subject: [PATCH] Get correct kind for generic symbol completion entries --- src/compiler/checker.ts | 2 +- src/services/services.ts | 3 +-- tests/cases/fourslash/completionListOfGnericSymbol.ts | 11 +++++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 tests/cases/fourslash/completionListOfGnericSymbol.ts 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"); +