Skip to content

Commit e508bf7

Browse files
committed
Add symbol keyword
1 parent 95af997 commit e508bf7

File tree

8 files changed

+10
-9
lines changed

8 files changed

+10
-9
lines changed

src/compiler/checker.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -9751,6 +9751,7 @@ module ts {
97519751
case SyntaxKind.NumberKeyword:
97529752
case SyntaxKind.StringKeyword:
97539753
case SyntaxKind.BooleanKeyword:
9754+
case SyntaxKind.SymbolKeyword:
97549755
return true;
97559756
case SyntaxKind.VoidKeyword:
97569757
return node.parent.kind !== SyntaxKind.VoidExpression;
@@ -10529,7 +10530,7 @@ module ts {
1052910530
return grammarErrorOnNode(parameter.name, Diagnostics.An_index_signature_parameter_must_have_a_type_annotation);
1053010531
}
1053110532
if (parameter.type.kind !== SyntaxKind.StringKeyword && parameter.type.kind !== SyntaxKind.NumberKeyword) {
10532-
if (isESSymbolTypeNode(parameter.type)) {
10533+
if (parameter.type.kind === SyntaxKind.SymbolKeyword) {
1053310534
if (languageVersion < ScriptTarget.ES6) {
1053410535
return grammarErrorOnNode(parameter.type, Diagnostics.Symbol_indexers_are_only_available_when_targeting_ECMAScript_6_and_higher);
1053510536
}

src/compiler/emitter.ts

+1
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,7 @@ module ts {
579579
case SyntaxKind.StringKeyword:
580580
case SyntaxKind.NumberKeyword:
581581
case SyntaxKind.BooleanKeyword:
582+
case SyntaxKind.SymbolKeyword:
582583
case SyntaxKind.VoidKeyword:
583584
case SyntaxKind.StringLiteral:
584585
return writeTextOfNode(currentSourceFile, type);

src/compiler/parser.ts

+2
Original file line numberDiff line numberDiff line change
@@ -2515,6 +2515,7 @@ module ts {
25152515
case SyntaxKind.StringKeyword:
25162516
case SyntaxKind.NumberKeyword:
25172517
case SyntaxKind.BooleanKeyword:
2518+
case SyntaxKind.SymbolKeyword:
25182519
// If these are followed by a dot, then parse these out as a dotted type reference instead.
25192520
var node = tryParse(parseKeywordAndNoDot);
25202521
return node || parseTypeReference();
@@ -2539,6 +2540,7 @@ module ts {
25392540
case SyntaxKind.StringKeyword:
25402541
case SyntaxKind.NumberKeyword:
25412542
case SyntaxKind.BooleanKeyword:
2543+
case SyntaxKind.SymbolKeyword:
25422544
case SyntaxKind.VoidKeyword:
25432545
case SyntaxKind.TypeOfKeyword:
25442546
case SyntaxKind.OpenBraceToken:

src/compiler/scanner.ts

+1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ module ts {
8282
"string": SyntaxKind.StringKeyword,
8383
"super": SyntaxKind.SuperKeyword,
8484
"switch": SyntaxKind.SwitchKeyword,
85+
"symbol": SyntaxKind.SymbolKeyword,
8586
"this": SyntaxKind.ThisKeyword,
8687
"throw": SyntaxKind.ThrowKeyword,
8788
"true": SyntaxKind.TrueKeyword,

src/compiler/types.ts

+1
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ module ts {
140140
NumberKeyword,
141141
SetKeyword,
142142
StringKeyword,
143+
SymbolKeyword,
143144
TypeKeyword,
144145

145146
// Parse tree nodes

src/compiler/utilities.ts

-6
Original file line numberDiff line numberDiff line change
@@ -852,12 +852,6 @@ module ts {
852852
return node.kind === SyntaxKind.PropertyAccessExpression && isESSymbolIdentifier((<PropertyAccessExpression>node).expression);
853853
}
854854

855-
export function isESSymbolTypeNode(node: Node): boolean {
856-
return node.kind === SyntaxKind.TypeReference &&
857-
(<TypeReferenceNode>node).typeArguments === undefined &&
858-
isESSymbolIdentifier((<TypeReferenceNode>node).typeName);
859-
}
860-
861855
/**
862856
* Includes the word "Symbol" with unicode escapes
863857
*/

src/services/formatting/tokenRange.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ module ts.formatting {
134134
static UnaryPredecrementExpressions = TokenRange.FromTokens([SyntaxKind.Identifier, SyntaxKind.OpenParenToken, SyntaxKind.ThisKeyword, SyntaxKind.NewKeyword]);
135135
static UnaryPostdecrementExpressions = TokenRange.FromTokens([SyntaxKind.Identifier, SyntaxKind.CloseParenToken, SyntaxKind.CloseBracketToken, SyntaxKind.NewKeyword]);
136136
static Comments = TokenRange.FromTokens([SyntaxKind.SingleLineCommentTrivia, SyntaxKind.MultiLineCommentTrivia]);
137-
static TypeNames = TokenRange.FromTokens([SyntaxKind.Identifier, SyntaxKind.NumberKeyword, SyntaxKind.StringKeyword, SyntaxKind.BooleanKeyword, SyntaxKind.VoidKeyword, SyntaxKind.AnyKeyword]);
137+
static TypeNames = TokenRange.FromTokens([SyntaxKind.Identifier, SyntaxKind.NumberKeyword, SyntaxKind.StringKeyword, SyntaxKind.BooleanKeyword, SyntaxKind.SymbolKeyword, SyntaxKind.VoidKeyword, SyntaxKind.AnyKeyword]);
138138
}
139139
}
140140
}

src/services/services.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -5754,7 +5754,8 @@ module ts {
57545754
else if (token === SyntaxKind.AnyKeyword ||
57555755
token === SyntaxKind.StringKeyword ||
57565756
token === SyntaxKind.NumberKeyword ||
5757-
token === SyntaxKind.BooleanKeyword) {
5757+
token === SyntaxKind.BooleanKeyword ||
5758+
token === SyntaxKind.SymbolKeyword) {
57585759
if (angleBracketStack > 0 && !classifyKeywordsInGenerics) {
57595760
// If it looks like we're could be in something generic, don't classify this
57605761
// as a keyword. We may just get overwritten by the syntactic classifier,

0 commit comments

Comments
 (0)