Skip to content

Commit ef64cde

Browse files
authored
Merge pull request microsoft#22409 from Microsoft/symbolKind
Symbol kind needs to use location before falling back to flags
2 parents 4b6adb8 + ea37c37 commit ef64cde

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

src/services/symbolDisplay.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,25 @@
22
namespace ts.SymbolDisplay {
33
// TODO(drosen): use contextual SemanticMeaning.
44
export function getSymbolKind(typeChecker: TypeChecker, symbol: Symbol, location: Node): ScriptElementKind {
5-
const flags = getCombinedLocalAndExportSymbolFlags(symbol);
5+
const result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(typeChecker, symbol, location);
6+
if (result !== ScriptElementKind.unknown) {
7+
return result;
8+
}
69

10+
const flags = getCombinedLocalAndExportSymbolFlags(symbol);
711
if (flags & SymbolFlags.Class) {
812
return getDeclarationOfKind(symbol, SyntaxKind.ClassExpression) ?
9-
ScriptElementKind.localClassElement : ScriptElementKind.classElement;
13+
ScriptElementKind.localClassElement : ScriptElementKind.classElement;
1014
}
1115
if (flags & SymbolFlags.Enum) return ScriptElementKind.enumElement;
1216
if (flags & SymbolFlags.TypeAlias) return ScriptElementKind.typeElement;
1317
if (flags & SymbolFlags.Interface) return ScriptElementKind.interfaceElement;
1418
if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement;
1519

16-
const result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(typeChecker, symbol, location);
17-
if (result === ScriptElementKind.unknown) {
18-
if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement;
19-
if (flags & SymbolFlags.EnumMember) return ScriptElementKind.enumMemberElement;
20-
if (flags & SymbolFlags.Alias) return ScriptElementKind.alias;
21-
if (flags & SymbolFlags.Module) return ScriptElementKind.moduleElement;
22-
}
20+
if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement;
21+
if (flags & SymbolFlags.EnumMember) return ScriptElementKind.enumMemberElement;
22+
if (flags & SymbolFlags.Alias) return ScriptElementKind.alias;
23+
if (flags & SymbolFlags.Module) return ScriptElementKind.moduleElement;
2324

2425
return result;
2526
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/// <reference path='fourslash.ts'/>
2+
3+
////interface AnalyserNode {
4+
////}
5+
////declare var AnalyserNode: {
6+
//// prototype: AnalyserNode;
7+
//// new(): AnalyserNode;
8+
////};
9+
/////**/
10+
11+
goTo.marker();
12+
verify.completionListContains("AnalyserNode", /*text*/ undefined, /*documentation*/ undefined, "var");
13+
verify.completionEntryDetailIs("AnalyserNode", `interface AnalyserNode
14+
var AnalyserNode: {
15+
new (): AnalyserNode;
16+
prototype: AnalyserNode;
17+
}`, /*documentation*/ undefined, "var")

0 commit comments

Comments
 (0)