File tree 3 files changed +32
-12
lines changed 3 files changed +32
-12
lines changed Original file line number Diff line number Diff line change @@ -273,18 +273,7 @@ namespace ts {
273
273
{
274
274
name : "target" ,
275
275
shortName : "t" ,
276
- type : createMapFromTemplate ( {
277
- es3 : ScriptTarget . ES3 ,
278
- es5 : ScriptTarget . ES5 ,
279
- es6 : ScriptTarget . ES2015 ,
280
- es2015 : ScriptTarget . ES2015 ,
281
- es2016 : ScriptTarget . ES2016 ,
282
- es2017 : ScriptTarget . ES2017 ,
283
- es2018 : ScriptTarget . ES2018 ,
284
- es2019 : ScriptTarget . ES2019 ,
285
- es2020 : ScriptTarget . ES2020 ,
286
- esnext : ScriptTarget . ESNext ,
287
- } ) ,
276
+ type : ScriptTargetMap ,
288
277
affectsSourceFile : true ,
289
278
affectsModuleResolution : true ,
290
279
affectsEmit : true ,
Original file line number Diff line number Diff line change @@ -8186,6 +8186,19 @@ namespace ts {
8186
8186
} ) ;
8187
8187
break ;
8188
8188
}
8189
+ case "compilerOptions" : {
8190
+ forEach ( toArray ( entryOrList ) , entry => {
8191
+ // _last_ compilerOptions target value in a file is the "winner"
8192
+ const targetKey = ( entry as PragmaPseudoMap [ "compilerOptions" ] ) . arguments . target ;
8193
+ if ( ScriptTargetMap . has ( targetKey ) ) {
8194
+ context . languageVersion = ScriptTargetMap . get ( targetKey ) as ScriptTarget ;
8195
+ }
8196
+ else {
8197
+ Debug . fail ( `Unrecognized compilerOptions target in XML pragma: ${ targetKey } ` ) ;
8198
+ }
8199
+ } ) ;
8200
+ break ;
8201
+ }
8189
8202
case "jsx" : return ; // Accessed directly
8190
8203
default : Debug . fail ( "Unhandled pragma kind" ) ; // Can this be made into an assertNever in the future?
8191
8204
}
Original file line number Diff line number Diff line change @@ -5163,6 +5163,20 @@ namespace ts {
5163
5163
Latest = ESNext ,
5164
5164
}
5165
5165
5166
+ export const ScriptTargetMap = createMapFromTemplate ( {
5167
+ es3 : ScriptTarget . ES3 ,
5168
+ es5 : ScriptTarget . ES5 ,
5169
+ es6 : ScriptTarget . ES2015 ,
5170
+ es2015 : ScriptTarget . ES2015 ,
5171
+ es2016 : ScriptTarget . ES2016 ,
5172
+ es2017 : ScriptTarget . ES2017 ,
5173
+ es2018 : ScriptTarget . ES2018 ,
5174
+ es2019 : ScriptTarget . ES2019 ,
5175
+ es2020 : ScriptTarget . ES2020 ,
5176
+ esnext : ScriptTarget . ESNext ,
5177
+ } ) ;
5178
+ Object . freeze ( ScriptTargetMap ) ;
5179
+
5166
5180
export const enum LanguageVariant {
5167
5181
Standard ,
5168
5182
JSX
@@ -6454,6 +6468,10 @@ namespace ts {
6454
6468
args : [ { name : "name" } ] ,
6455
6469
kind : PragmaKindFlags . TripleSlashXML
6456
6470
} ,
6471
+ "compilerOptions" : {
6472
+ args : [ { name : "target" } ] ,
6473
+ kind : PragmaKindFlags . TripleSlashXML
6474
+ } ,
6457
6475
"ts-check" : {
6458
6476
kind : PragmaKindFlags . SingleLine
6459
6477
} ,
You can’t perform that action at this time.
0 commit comments