Skip to content

Commit 8fd1c79

Browse files
Undid changes where contextual semantics are taken into account.
1 parent 8b3904f commit 8fd1c79

File tree

2 files changed

+25
-23
lines changed

2 files changed

+25
-23
lines changed

src/services/services.ts

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2663,16 +2663,12 @@ module ts {
26632663
function getSymbolKind(symbol: Symbol, meaningAtLocation: SemanticMeaning): string {
26642664
var flags = typeInfoResolver.getRootSymbol(symbol).getFlags();
26652665

2666+
// TODO(drosen): use meaningAtLocation.
26662667
if (flags & SymbolFlags.Class) return ScriptElementKind.classElement;
26672668
if (flags & SymbolFlags.Enum) return ScriptElementKind.enumElement;
2668-
2669-
// The following should only apply if encountered at a type position,
2670-
// and need to have precedence over other meanings if this is the case.
2671-
if (meaningAtLocation & SemanticMeaning.Type) {
2672-
if (flags & SymbolFlags.Interface) return ScriptElementKind.interfaceElement;
2673-
if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement;
2674-
}
2675-
2669+
if (flags & SymbolFlags.Interface) return ScriptElementKind.interfaceElement;
2670+
if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement;
2671+
26762672
var result = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(symbol, flags);
26772673
if (result === ScriptElementKind.unknown) {
26782674
if (flags & SymbolFlags.TypeParameter) return ScriptElementKind.typeParameterElement;
@@ -2745,10 +2741,13 @@ module ts {
27452741
: ScriptElementKindModifier.none;
27462742
}
27472743

2748-
function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol: Symbol, sourceFile: SourceFile, enclosingDeclaration: Node,
2749-
typeResolver: TypeChecker, location: Node,
2750-
// TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location
2751-
semanticMeaning = getMeaningFromLocation(location)) {
2744+
// TODO(drosen): Currently completion entry details passes the SemanticMeaning.All instead of using semanticMeaning of location
2745+
function getSymbolDisplayPartsDocumentationAndSymbolKind(symbol: Symbol,
2746+
sourceFile: SourceFile,
2747+
enclosingDeclaration: Node,
2748+
typeResolver: TypeChecker,
2749+
location: Node,
2750+
semanticMeaning: SemanticMeaning) {
27522751
var displayParts: SymbolDisplayPart[] = [];
27532752
var documentation: SymbolDisplayPart[];
27542753
var symbolFlags = typeResolver.getRootSymbol(symbol).flags;
@@ -2853,13 +2852,15 @@ module ts {
28532852
}
28542853
}
28552854
}
2855+
2856+
// TODO(drosen): use semanticMeaning.
28562857
if (symbolFlags & SymbolFlags.Class && !hasAddedSymbolInfo) {
28572858
displayParts.push(keywordPart(SyntaxKind.ClassKeyword));
28582859
displayParts.push(spacePart());
28592860
displayParts.push.apply(displayParts, symbolToDisplayParts(typeResolver, symbol, sourceFile, /*meaning*/ undefined, SymbolFormatFlags.WriteTypeParametersOrArguments));
28602861
writeTypeParametersOfSymbol(symbol, sourceFile);
28612862
}
2862-
if ((symbolFlags & SymbolFlags.Interface) && (semanticMeaning & SemanticMeaning.Type)) {
2863+
if (symbolFlags & SymbolFlags.Interface) {
28632864
addNewLineIfDisplayPartsExist();
28642865
displayParts.push(keywordPart(SyntaxKind.InterfaceKeyword));
28652866
displayParts.push(spacePart());
@@ -2878,7 +2879,7 @@ module ts {
28782879
displayParts.push(spacePart());
28792880
displayParts.push.apply(displayParts, symbolToDisplayParts(typeResolver, symbol, sourceFile));
28802881
}
2881-
if ((symbolFlags & SymbolFlags.TypeParameter) && (semanticMeaning & SemanticMeaning.Type)) {
2882+
if (symbolFlags & SymbolFlags.TypeParameter) {
28822883
addNewLineIfDisplayPartsExist();
28832884
displayParts.push(punctuationPart(SyntaxKind.OpenParenToken));
28842885
displayParts.push(textPart("type parameter"));
@@ -3049,7 +3050,8 @@ module ts {
30493050
return undefined;
30503051
}
30513052

3052-
var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node);
3053+
// TODO(drosen): Properly address 'semanticMeaning' parameter here
3054+
var displayPartsDocumentationsAndKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, sourceFile, getContainerNode(node), typeInfoResolver, node, SemanticMeaning.All);
30533055
return {
30543056
kind: displayPartsDocumentationsAndKind.symbolKind,
30553057
kindModifiers: getSymbolModifiers(symbol),
@@ -4666,19 +4668,18 @@ module ts {
46664668
function classifySymbol(symbol: Symbol, meaningAtPosition: SemanticMeaning) {
46674669
var flags = symbol.getFlags();
46684670

4671+
// TODO(drosen): use meaningAtPosition.
46694672
if (flags & SymbolFlags.Class) {
46704673
return ClassificationTypeNames.className;
46714674
}
46724675
else if (flags & SymbolFlags.Enum) {
46734676
return ClassificationTypeNames.enumName;
46744677
}
4675-
else if (meaningAtPosition & SemanticMeaning.Type) {
4676-
if (flags & SymbolFlags.Interface) {
4677-
return ClassificationTypeNames.interfaceName;
4678-
}
4679-
else if (flags & SymbolFlags.TypeParameter) {
4680-
return ClassificationTypeNames.typeParameterName;
4681-
}
4678+
else if (flags & SymbolFlags.Interface) {
4679+
return ClassificationTypeNames.interfaceName;
4680+
}
4681+
else if (flags & SymbolFlags.TypeParameter) {
4682+
return ClassificationTypeNames.typeParameterName;
46824683
}
46834684
else if (flags & SymbolFlags.Module) {
46844685
return ClassificationTypeNames.moduleName;

tests/cases/fourslash/semanticClassification2.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@
88
//// Thing.toExponential();
99

1010
var c = classification;
11-
verify.semanticClassificationsAre(c.interfaceName("Thing"));
11+
// NOTE: this is *wrong*, but will be fixed shortly.
12+
verify.semanticClassificationsAre(c.interfaceName("Thing"), c.interfaceName("Thing"), c.interfaceName("Thing"));

0 commit comments

Comments
 (0)