Skip to content

Commit 60bb37b

Browse files
committed
Add language service support for const
1 parent e15f4e6 commit 60bb37b

File tree

5 files changed

+40
-3
lines changed

5 files changed

+40
-3
lines changed

src/services/navigationBar.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,12 @@ module ts.NavigationBar {
233233
return createItem(node, getTextOfNode((<FunctionDeclaration>node).name), ts.ScriptElementKind.functionElement);
234234

235235
case SyntaxKind.VariableDeclaration:
236-
return createItem(node, getTextOfNode((<VariableDeclaration>node).name), ts.ScriptElementKind.variableElement);
236+
if (node.flags & NodeFlags.Const) {
237+
return createItem(node, getTextOfNode((<VariableDeclaration>node).name), ts.ScriptElementKind.constantElement);
238+
}
239+
else {
240+
return createItem(node, getTextOfNode((<VariableDeclaration>node).name), ts.ScriptElementKind.variableElement);
241+
}
237242

238243
case SyntaxKind.Constructor:
239244
return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement);

src/services/services.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -1235,7 +1235,9 @@ module ts {
12351235

12361236
static label = "label";
12371237

1238-
static alias = "alias"
1238+
static alias = "alias";
1239+
1240+
static constantElement = "constant";
12391241
}
12401242

12411243
export class ScriptElementKindModifier {
@@ -2720,6 +2722,9 @@ module ts {
27202722
if (isFirstDeclarationOfSymbolParameter(symbol)) {
27212723
return ScriptElementKind.parameterElement;
27222724
}
2725+
else if(forEach(symbol.declarations, d => d.flags & NodeFlags.Const)) {
2726+
return ScriptElementKind.constantElement;
2727+
}
27232728
return isLocalVariableOrFunction(symbol) ? ScriptElementKind.localVariableElement : ScriptElementKind.variableElement;
27242729
}
27252730
if (flags & SymbolFlags.Function) return isLocalVariableOrFunction(symbol) ? ScriptElementKind.localFunctionElement : ScriptElementKind.functionElement;
@@ -2751,7 +2756,7 @@ module ts {
27512756
case SyntaxKind.ClassDeclaration: return ScriptElementKind.classElement;
27522757
case SyntaxKind.InterfaceDeclaration: return ScriptElementKind.interfaceElement;
27532758
case SyntaxKind.EnumDeclaration: return ScriptElementKind.enumElement;
2754-
case SyntaxKind.VariableDeclaration: return ScriptElementKind.variableElement;
2759+
case SyntaxKind.VariableDeclaration: return node.flags & NodeFlags.Const ? ScriptElementKind.constantElement: ScriptElementKind.variableElement;
27552760
case SyntaxKind.FunctionDeclaration: return ScriptElementKind.functionElement;
27562761
case SyntaxKind.GetAccessor: return ScriptElementKind.memberGetAccessorElement;
27572762
case SyntaxKind.SetAccessor: return ScriptElementKind.memberSetAccessorElement;
@@ -2840,6 +2845,7 @@ module ts {
28402845
switch (symbolKind) {
28412846
case ScriptElementKind.memberVariableElement:
28422847
case ScriptElementKind.variableElement:
2848+
case ScriptElementKind.constantElement:
28432849
case ScriptElementKind.parameterElement:
28442850
case ScriptElementKind.localVariableElement:
28452851
// If it is call or construct signature of lambda's write type name
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
///<reference path="fourslash.ts" />
2+
3+
////const c = "s";
4+
/////**/
5+
6+
goTo.marker();
7+
verify.completionListContains("c", /*text*/ undefined, /*documentation*/ undefined, "constant");

tests/cases/fourslash/navbar_const.ts

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/// <reference path="fourslash.ts" />
2+
3+
//// {| "itemName": "c", "kind": "constant", "parentName": "" |}const c = 0;
4+
5+
test.markers().forEach(marker => {
6+
verify.getScriptLexicalStructureListContains(
7+
marker.data.itemName,
8+
marker.data.kind,
9+
marker.fileName,
10+
marker.data.parentName,
11+
marker.data.isAdditionalRange,
12+
marker.position);
13+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
////const /**/c = 0 ;
4+
5+
goTo.marker();
6+
verify.quickInfoIs("(constant) c: number");

0 commit comments

Comments
 (0)