@@ -60,81 +60,87 @@ namespace ts {
60
60
tryScan < T > ( callback : ( ) => T ) : T ;
61
61
}
62
62
63
- const textToToken = createMapFromTemplate ( {
64
- "abstract" : SyntaxKind . AbstractKeyword ,
65
- "any" : SyntaxKind . AnyKeyword ,
66
- "as" : SyntaxKind . AsKeyword ,
67
- "boolean" : SyntaxKind . BooleanKeyword ,
68
- "break" : SyntaxKind . BreakKeyword ,
69
- "case" : SyntaxKind . CaseKeyword ,
70
- "catch" : SyntaxKind . CatchKeyword ,
71
- "class" : SyntaxKind . ClassKeyword ,
72
- "continue" : SyntaxKind . ContinueKeyword ,
73
- "const" : SyntaxKind . ConstKeyword ,
74
- "constructor" : SyntaxKind . ConstructorKeyword ,
75
- "debugger" : SyntaxKind . DebuggerKeyword ,
76
- "declare" : SyntaxKind . DeclareKeyword ,
77
- "default" : SyntaxKind . DefaultKeyword ,
78
- "delete" : SyntaxKind . DeleteKeyword ,
79
- "do" : SyntaxKind . DoKeyword ,
80
- "else" : SyntaxKind . ElseKeyword ,
81
- "enum" : SyntaxKind . EnumKeyword ,
82
- "export" : SyntaxKind . ExportKeyword ,
83
- "extends" : SyntaxKind . ExtendsKeyword ,
84
- "false" : SyntaxKind . FalseKeyword ,
85
- "finally" : SyntaxKind . FinallyKeyword ,
86
- "for" : SyntaxKind . ForKeyword ,
87
- "from" : SyntaxKind . FromKeyword ,
88
- "function" : SyntaxKind . FunctionKeyword ,
89
- "get" : SyntaxKind . GetKeyword ,
90
- "if" : SyntaxKind . IfKeyword ,
91
- "implements" : SyntaxKind . ImplementsKeyword ,
92
- "import" : SyntaxKind . ImportKeyword ,
93
- "in" : SyntaxKind . InKeyword ,
94
- "infer" : SyntaxKind . InferKeyword ,
95
- "instanceof" : SyntaxKind . InstanceOfKeyword ,
96
- "interface" : SyntaxKind . InterfaceKeyword ,
97
- "is" : SyntaxKind . IsKeyword ,
98
- "keyof" : SyntaxKind . KeyOfKeyword ,
99
- "let" : SyntaxKind . LetKeyword ,
100
- "module" : SyntaxKind . ModuleKeyword ,
101
- "namespace" : SyntaxKind . NamespaceKeyword ,
102
- "never" : SyntaxKind . NeverKeyword ,
103
- "new" : SyntaxKind . NewKeyword ,
104
- "null" : SyntaxKind . NullKeyword ,
105
- "number" : SyntaxKind . NumberKeyword ,
106
- "object" : SyntaxKind . ObjectKeyword ,
107
- "package" : SyntaxKind . PackageKeyword ,
108
- "private" : SyntaxKind . PrivateKeyword ,
109
- "protected" : SyntaxKind . ProtectedKeyword ,
110
- "public" : SyntaxKind . PublicKeyword ,
111
- "readonly" : SyntaxKind . ReadonlyKeyword ,
112
- "require" : SyntaxKind . RequireKeyword ,
113
- "global" : SyntaxKind . GlobalKeyword ,
114
- "return" : SyntaxKind . ReturnKeyword ,
115
- "set" : SyntaxKind . SetKeyword ,
116
- "static" : SyntaxKind . StaticKeyword ,
117
- "string" : SyntaxKind . StringKeyword ,
118
- "super" : SyntaxKind . SuperKeyword ,
119
- "switch" : SyntaxKind . SwitchKeyword ,
120
- "symbol" : SyntaxKind . SymbolKeyword ,
121
- "this" : SyntaxKind . ThisKeyword ,
122
- "throw" : SyntaxKind . ThrowKeyword ,
123
- "true" : SyntaxKind . TrueKeyword ,
124
- "try" : SyntaxKind . TryKeyword ,
125
- "type" : SyntaxKind . TypeKeyword ,
126
- "typeof" : SyntaxKind . TypeOfKeyword ,
127
- "undefined" : SyntaxKind . UndefinedKeyword ,
128
- "unique" : SyntaxKind . UniqueKeyword ,
129
- "unknown" : SyntaxKind . UnknownKeyword ,
130
- "var" : SyntaxKind . VarKeyword ,
131
- "void" : SyntaxKind . VoidKeyword ,
132
- "while" : SyntaxKind . WhileKeyword ,
133
- "with" : SyntaxKind . WithKeyword ,
134
- "yield" : SyntaxKind . YieldKeyword ,
135
- "async" : SyntaxKind . AsyncKeyword ,
136
- "await" : SyntaxKind . AwaitKeyword ,
137
- "of" : SyntaxKind . OfKeyword ,
63
+ const textToKeywordObj : MapLike < KeywordSyntaxKind > = {
64
+ abstract : SyntaxKind . AbstractKeyword ,
65
+ any : SyntaxKind . AnyKeyword ,
66
+ as : SyntaxKind . AsKeyword ,
67
+ boolean : SyntaxKind . BooleanKeyword ,
68
+ break : SyntaxKind . BreakKeyword ,
69
+ case : SyntaxKind . CaseKeyword ,
70
+ catch : SyntaxKind . CatchKeyword ,
71
+ class : SyntaxKind . ClassKeyword ,
72
+ continue : SyntaxKind . ContinueKeyword ,
73
+ const : SyntaxKind . ConstKeyword ,
74
+ [ "" + "constructor" ] : SyntaxKind . ConstructorKeyword ,
75
+ debugger : SyntaxKind . DebuggerKeyword ,
76
+ declare : SyntaxKind . DeclareKeyword ,
77
+ default : SyntaxKind . DefaultKeyword ,
78
+ delete : SyntaxKind . DeleteKeyword ,
79
+ do : SyntaxKind . DoKeyword ,
80
+ else : SyntaxKind . ElseKeyword ,
81
+ enum : SyntaxKind . EnumKeyword ,
82
+ export : SyntaxKind . ExportKeyword ,
83
+ extends : SyntaxKind . ExtendsKeyword ,
84
+ false : SyntaxKind . FalseKeyword ,
85
+ finally : SyntaxKind . FinallyKeyword ,
86
+ for : SyntaxKind . ForKeyword ,
87
+ from : SyntaxKind . FromKeyword ,
88
+ function : SyntaxKind . FunctionKeyword ,
89
+ get : SyntaxKind . GetKeyword ,
90
+ if : SyntaxKind . IfKeyword ,
91
+ implements : SyntaxKind . ImplementsKeyword ,
92
+ import : SyntaxKind . ImportKeyword ,
93
+ in : SyntaxKind . InKeyword ,
94
+ infer : SyntaxKind . InferKeyword ,
95
+ instanceof : SyntaxKind . InstanceOfKeyword ,
96
+ interface : SyntaxKind . InterfaceKeyword ,
97
+ is : SyntaxKind . IsKeyword ,
98
+ keyof : SyntaxKind . KeyOfKeyword ,
99
+ let : SyntaxKind . LetKeyword ,
100
+ module : SyntaxKind . ModuleKeyword ,
101
+ namespace : SyntaxKind . NamespaceKeyword ,
102
+ never : SyntaxKind . NeverKeyword ,
103
+ new : SyntaxKind . NewKeyword ,
104
+ null : SyntaxKind . NullKeyword ,
105
+ number : SyntaxKind . NumberKeyword ,
106
+ object : SyntaxKind . ObjectKeyword ,
107
+ package : SyntaxKind . PackageKeyword ,
108
+ private : SyntaxKind . PrivateKeyword ,
109
+ protected : SyntaxKind . ProtectedKeyword ,
110
+ public : SyntaxKind . PublicKeyword ,
111
+ readonly : SyntaxKind . ReadonlyKeyword ,
112
+ require : SyntaxKind . RequireKeyword ,
113
+ global : SyntaxKind . GlobalKeyword ,
114
+ return : SyntaxKind . ReturnKeyword ,
115
+ set : SyntaxKind . SetKeyword ,
116
+ static : SyntaxKind . StaticKeyword ,
117
+ string : SyntaxKind . StringKeyword ,
118
+ super : SyntaxKind . SuperKeyword ,
119
+ switch : SyntaxKind . SwitchKeyword ,
120
+ symbol : SyntaxKind . SymbolKeyword ,
121
+ this : SyntaxKind . ThisKeyword ,
122
+ throw : SyntaxKind . ThrowKeyword ,
123
+ true : SyntaxKind . TrueKeyword ,
124
+ try : SyntaxKind . TryKeyword ,
125
+ type : SyntaxKind . TypeKeyword ,
126
+ typeof : SyntaxKind . TypeOfKeyword ,
127
+ undefined : SyntaxKind . UndefinedKeyword ,
128
+ unique : SyntaxKind . UniqueKeyword ,
129
+ unknown : SyntaxKind . UnknownKeyword ,
130
+ var : SyntaxKind . VarKeyword ,
131
+ void : SyntaxKind . VoidKeyword ,
132
+ while : SyntaxKind . WhileKeyword ,
133
+ with : SyntaxKind . WithKeyword ,
134
+ yield : SyntaxKind . YieldKeyword ,
135
+ async : SyntaxKind . AsyncKeyword ,
136
+ await : SyntaxKind . AwaitKeyword ,
137
+ of : SyntaxKind . OfKeyword ,
138
+ } ;
139
+
140
+ const textToKeyword = createMapFromTemplate ( textToKeywordObj ) ;
141
+
142
+ const textToToken = createMapFromTemplate < SyntaxKind > ( {
143
+ ...textToKeywordObj ,
138
144
"{" : SyntaxKind . OpenBraceToken ,
139
145
"}" : SyntaxKind . CloseBraceToken ,
140
146
"(" : SyntaxKind . OpenParenToken ,
@@ -1288,15 +1294,15 @@ namespace ts {
1288
1294
return result ;
1289
1295
}
1290
1296
1291
- function getIdentifierToken ( ) : SyntaxKind {
1297
+ function getIdentifierToken ( ) : SyntaxKind . Identifier | KeywordSyntaxKind {
1292
1298
// Reserved words are between 2 and 11 characters long and start with a lowercase letter
1293
1299
const len = tokenValue . length ;
1294
1300
if ( len >= 2 && len <= 11 ) {
1295
1301
const ch = tokenValue . charCodeAt ( 0 ) ;
1296
1302
if ( ch >= CharacterCodes . a && ch <= CharacterCodes . z ) {
1297
- token = textToToken . get ( tokenValue ) ! ;
1298
- if ( token !== undefined ) {
1299
- return token ;
1303
+ const keyword = textToKeyword . get ( tokenValue ) ;
1304
+ if ( keyword !== undefined ) {
1305
+ return token = keyword ;
1300
1306
}
1301
1307
}
1302
1308
}
@@ -2016,7 +2022,7 @@ namespace ts {
2016
2022
pos ++ ;
2017
2023
}
2018
2024
tokenValue = text . substring ( tokenPos , pos ) ;
2019
- return token = SyntaxKind . Identifier ;
2025
+ return token = getIdentifierToken ( ) ;
2020
2026
}
2021
2027
else {
2022
2028
return token = SyntaxKind . Unknown ;
0 commit comments