@@ -60,81 +60,87 @@ namespace ts {
6060 tryScan < T > ( callback : ( ) => T ) : T ;
6161 }
6262
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 ,
138144 "{" : SyntaxKind . OpenBraceToken ,
139145 "}" : SyntaxKind . CloseBraceToken ,
140146 "(" : SyntaxKind . OpenParenToken ,
@@ -1288,15 +1294,15 @@ namespace ts {
12881294 return result ;
12891295 }
12901296
1291- function getIdentifierToken ( ) : SyntaxKind {
1297+ function getIdentifierToken ( ) : SyntaxKind . Identifier | KeywordSyntaxKind {
12921298 // Reserved words are between 2 and 11 characters long and start with a lowercase letter
12931299 const len = tokenValue . length ;
12941300 if ( len >= 2 && len <= 11 ) {
12951301 const ch = tokenValue . charCodeAt ( 0 ) ;
12961302 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 ;
13001306 }
13011307 }
13021308 }
@@ -2016,7 +2022,7 @@ namespace ts {
20162022 pos ++ ;
20172023 }
20182024 tokenValue = text . substring ( tokenPos , pos ) ;
2019- return token = SyntaxKind . Identifier ;
2025+ return token = getIdentifierToken ( ) ;
20202026 }
20212027 else {
20222028 return token = SyntaxKind . Unknown ;
0 commit comments