Skip to content

Commit 276a735

Browse files
Include the values of constant enums in quick-info.
1 parent fae7a35 commit 276a735

File tree

1 file changed

+36
-16
lines changed

1 file changed

+36
-16
lines changed

src/services/services.ts

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1491,11 +1491,14 @@ module ts {
14911491
var formattingRulesProvider: TypeScript.Services.Formatting.RulesProvider;
14921492
var hostCache: HostCache; // A cache of all the information about the files on the host side.
14931493
var program: Program;
1494+
14941495
// this checker is used to answer all LS questions except errors
14951496
var typeInfoResolver: TypeChecker;
1497+
14961498
// the sole purpose of this checker is to return semantic diagnostics
14971499
// creation is deferred - use getFullTypeCheckChecker to get instance
14981500
var fullTypeCheckChecker_doNotAccessDirectly: TypeChecker;
1501+
14991502
var useCaseSensitivefilenames = false;
15001503
var sourceFilesByName: Map<SourceFile> = {};
15011504
var documentRegistry = documentRegistry;
@@ -2258,31 +2261,35 @@ module ts {
22582261
// Having all this logic here is pretty unclean. Consider moving to the roslyn model
22592262
// where all symbol display logic is encapsulated into visitors and options.
22602263
var totalParts: SymbolDisplayPart[] = [];
2261-
var addType = false;
22622264

22632265
if (symbol.flags & SymbolFlags.Class) {
22642266
totalParts.push({ text: "class", kind: SymbolDisplayPartKind.keyword, symbol: undefined });
22652267
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2268+
totalParts.push.apply(totalParts, typeInfoResolver.symbolToDisplayParts(symbol, sourceFile));
22662269
}
22672270
else if (symbol.flags & SymbolFlags.Interface) {
22682271
totalParts.push({ text: "interface", kind: SymbolDisplayPartKind.keyword, symbol: undefined });
22692272
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2273+
totalParts.push.apply(totalParts, typeInfoResolver.symbolToDisplayParts(symbol, sourceFile));
22702274
}
22712275
else if (symbol.flags & SymbolFlags.Enum) {
22722276
totalParts.push({ text: "enum", kind: SymbolDisplayPartKind.keyword, symbol: undefined });
22732277
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2278+
totalParts.push.apply(totalParts, typeInfoResolver.symbolToDisplayParts(symbol, sourceFile));
22742279
}
22752280
else if (symbol.flags & SymbolFlags.Module) {
22762281
totalParts.push({ text: "module", kind: SymbolDisplayPartKind.keyword, symbol: undefined });
22772282
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2283+
totalParts.push.apply(totalParts, typeInfoResolver.symbolToDisplayParts(symbol, sourceFile));
22782284
}
22792285
else if (symbol.flags & SymbolFlags.TypeParameter) {
22802286
totalParts.push({ text: "(", kind: SymbolDisplayPartKind.punctuation, symbol: undefined });
22812287
totalParts.push({ text: "type parameter", kind: SymbolDisplayPartKind.text, symbol: undefined });
22822288
totalParts.push({ text: ")", kind: SymbolDisplayPartKind.punctuation, symbol: undefined });
2289+
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2290+
totalParts.push.apply(totalParts, typeInfoResolver.symbolToDisplayParts(symbol));
22832291
}
22842292
else {
2285-
addType = true;
22862293
totalParts.push({ text: "(", kind: SymbolDisplayPartKind.punctuation, symbol: undefined });
22872294
var text: string;
22882295

@@ -2299,24 +2306,37 @@ module ts {
22992306
totalParts.push({ text: text, kind: SymbolDisplayPartKind.text, symbol: undefined });
23002307
totalParts.push({ text: ")", kind: SymbolDisplayPartKind.punctuation, symbol: undefined });
23012308
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2302-
}
23032309

2304-
totalParts.push.apply(totalParts, typeInfoResolver.symbolToDisplayParts(symbol, getContainerNode(node)));
2310+
totalParts.push.apply(totalParts, typeInfoResolver.symbolToDisplayParts(symbol, getContainerNode(node)));
23052311

2306-
if (symbol.flags & SymbolFlags.Property ||
2307-
symbol.flags & SymbolFlags.Variable) {
2308-
2309-
totalParts.push({ text: ":", kind: SymbolDisplayPartKind.punctuation, symbol: undefined });
2310-
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2311-
}
2312-
else if (symbol.flags & SymbolFlags.EnumMember) {
2312+
var type = typeInfoResolver.getTypeOfSymbol(symbol);
23132313

2314-
}
2314+
if (symbol.flags & SymbolFlags.Property ||
2315+
symbol.flags & SymbolFlags.Variable) {
23152316

2316-
if (addType) {
2317-
var type = typeInfoResolver.getTypeOfSymbol(symbol);
2318-
if (type) {
2319-
totalParts.push.apply(totalParts, typeInfoResolver.typeToDisplayParts(type));
2317+
if (type) {
2318+
totalParts.push({ text: ":", kind: SymbolDisplayPartKind.punctuation, symbol: undefined });
2319+
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2320+
totalParts.push.apply(totalParts, typeInfoResolver.typeToDisplayParts(type, getContainerNode(node)));
2321+
}
2322+
}
2323+
else if (symbol.flags & SymbolFlags.Function ||
2324+
symbol.flags & SymbolFlags.Method) {
2325+
if (type) {
2326+
totalParts.push.apply(totalParts, typeInfoResolver.typeToDisplayParts(type, getContainerNode(node)));
2327+
}
2328+
}
2329+
else if (symbol.flags & SymbolFlags.EnumMember) {
2330+
var declaration = symbol.declarations[0];
2331+
if (declaration.kind === SyntaxKind.EnumMember) {
2332+
var constantValue = typeInfoResolver.getEnumMemberValue(<EnumMember>declaration);
2333+
if (constantValue !== undefined) {
2334+
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2335+
totalParts.push({ text: "=", kind: SymbolDisplayPartKind.operator, symbol: undefined });
2336+
totalParts.push({ text: " ", kind: SymbolDisplayPartKind.space, symbol: undefined });
2337+
totalParts.push({ text: constantValue.toString(), kind: SymbolDisplayPartKind.numericLiteral, symbol: undefined });
2338+
}
2339+
}
23202340
}
23212341
}
23222342

0 commit comments

Comments
 (0)