tsc-ts 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/README.md +2 -2
  2. package/bin/tsc-ts.js +70 -1
  3. package/dist/api/compiler/ast-utilities.d.ts +19 -1
  4. package/dist/api/compiler/ast-utilities.js +180 -95
  5. package/dist/api/compiler/ast.d.ts +22 -15
  6. package/dist/api/compiler/ast.js +1026 -995
  7. package/dist/api/compiler/astnav.js +15 -15
  8. package/dist/api/compiler/binder-utilities.js +186 -186
  9. package/dist/api/compiler/binder.js +290 -263
  10. package/dist/api/compiler/character-codes.js +2 -2
  11. package/dist/api/compiler/checker-calls.js +178 -124
  12. package/dist/api/compiler/checker-classes.d.ts +14 -3
  13. package/dist/api/compiler/checker-classes.js +134 -90
  14. package/dist/api/compiler/checker-contextual.js +64 -61
  15. package/dist/api/compiler/checker-declaration-order.js +79 -79
  16. package/dist/api/compiler/checker-declarations.d.ts +1 -0
  17. package/dist/api/compiler/checker-declarations.js +160 -136
  18. package/dist/api/compiler/checker-declared-types.js +67 -65
  19. package/dist/api/compiler/checker-decorators.js +77 -77
  20. package/dist/api/compiler/checker-deprecation.d.ts +8 -3
  21. package/dist/api/compiler/checker-deprecation.js +76 -55
  22. package/dist/api/compiler/checker-destructuring.js +47 -45
  23. package/dist/api/compiler/checker-elaboration.js +24 -24
  24. package/dist/api/compiler/checker-emit-helpers.js +4 -4
  25. package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
  26. package/dist/api/compiler/checker-emit-resolver.js +25 -13
  27. package/dist/api/compiler/checker-evaluator.js +9 -9
  28. package/dist/api/compiler/checker-expressions.js +244 -211
  29. package/dist/api/compiler/checker-functions.js +113 -107
  30. package/dist/api/compiler/checker-generated-code.d.ts +0 -11
  31. package/dist/api/compiler/checker-generated-code.js +28 -52
  32. package/dist/api/compiler/checker-grammar.d.ts +1 -0
  33. package/dist/api/compiler/checker-grammar.js +472 -440
  34. package/dist/api/compiler/checker-heritage.js +91 -93
  35. package/dist/api/compiler/checker-inference.d.ts +77 -5
  36. package/dist/api/compiler/checker-inference.js +487 -107
  37. package/dist/api/compiler/checker-iteration.d.ts +0 -10
  38. package/dist/api/compiler/checker-iteration.js +35 -52
  39. package/dist/api/compiler/checker-javascript.js +14 -14
  40. package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
  41. package/dist/api/compiler/checker-jsdoc.js +67 -58
  42. package/dist/api/compiler/checker-jsx.js +105 -88
  43. package/dist/api/compiler/checker-members.d.ts +9 -2
  44. package/dist/api/compiler/checker-members.js +212 -75
  45. package/dist/api/compiler/checker-modules.d.ts +15 -6
  46. package/dist/api/compiler/checker-modules.js +469 -309
  47. package/dist/api/compiler/checker-narrowing.js +273 -189
  48. package/dist/api/compiler/checker-object-literals.js +25 -22
  49. package/dist/api/compiler/checker-operators.js +126 -118
  50. package/dist/api/compiler/checker-overloads.js +27 -27
  51. package/dist/api/compiler/checker-property-access.js +59 -55
  52. package/dist/api/compiler/checker-services.d.ts +1 -0
  53. package/dist/api/compiler/checker-services.js +222 -210
  54. package/dist/api/compiler/checker-signatures.js +65 -49
  55. package/dist/api/compiler/checker-source-file.d.ts +5 -0
  56. package/dist/api/compiler/checker-source-file.js +154 -130
  57. package/dist/api/compiler/checker-statements.js +33 -32
  58. package/dist/api/compiler/checker-super.js +50 -50
  59. package/dist/api/compiler/checker-symbol-types.js +109 -93
  60. package/dist/api/compiler/checker-symbols.d.ts +13 -1
  61. package/dist/api/compiler/checker-symbols.js +264 -149
  62. package/dist/api/compiler/checker-type-factory.d.ts +5 -0
  63. package/dist/api/compiler/checker-type-factory.js +145 -36
  64. package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
  65. package/dist/api/compiler/checker-type-nodes.js +179 -141
  66. package/dist/api/compiler/checker-type-operators.d.ts +2 -0
  67. package/dist/api/compiler/checker-type-operators.js +110 -63
  68. package/dist/api/compiler/checker-types.d.ts +80 -3
  69. package/dist/api/compiler/checker-types.js +121 -2
  70. package/dist/api/compiler/checker-unused.js +114 -118
  71. package/dist/api/compiler/checker-utilities.js +11 -11
  72. package/dist/api/compiler/checker.d.ts +104 -31
  73. package/dist/api/compiler/checker.js +181 -33
  74. package/dist/api/compiler/command-line.d.ts +1 -3
  75. package/dist/api/compiler/command-line.js +47 -44
  76. package/dist/api/compiler/compile-program.d.ts +42 -3
  77. package/dist/api/compiler/compile-program.js +139 -27
  78. package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
  79. package/dist/api/compiler/diagnostic-messages.js +128 -122
  80. package/dist/api/compiler/diagnostics.d.ts +22 -0
  81. package/dist/api/compiler/diagnostics.js +93 -11
  82. package/dist/api/compiler/emitter.d.ts +7 -1
  83. package/dist/api/compiler/emitter.js +53 -11
  84. package/dist/api/compiler/file-include.d.ts +2 -1
  85. package/dist/api/compiler/file-include.js +11 -7
  86. package/dist/api/compiler/file-loader.d.ts +21 -1
  87. package/dist/api/compiler/file-loader.js +201 -48
  88. package/dist/api/compiler/instantiation.d.ts +7 -0
  89. package/dist/api/compiler/instantiation.js +101 -49
  90. package/dist/api/compiler/jsdoc.js +23 -23
  91. package/dist/api/compiler/link-tables.d.ts +48 -18
  92. package/dist/api/compiler/link-tables.js +80 -37
  93. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  94. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  95. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  96. package/dist/api/compiler/locales/de-DE.js +1 -1
  97. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  98. package/dist/api/compiler/locales/es-ES.js +1 -1
  99. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  100. package/dist/api/compiler/locales/fr-FR.js +1 -1
  101. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  102. package/dist/api/compiler/locales/it-IT.js +1 -1
  103. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  104. package/dist/api/compiler/locales/ja-JP.js +1 -1
  105. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  106. package/dist/api/compiler/locales/ko-KR.js +1 -1
  107. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  108. package/dist/api/compiler/locales/pl-PL.js +1 -1
  109. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  110. package/dist/api/compiler/locales/pt-BR.js +1 -1
  111. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  112. package/dist/api/compiler/locales/ru-RU.js +1 -1
  113. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  114. package/dist/api/compiler/locales/tr-TR.js +1 -1
  115. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  116. package/dist/api/compiler/locales/zh-CN.js +1 -1
  117. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  118. package/dist/api/compiler/locales/zh-TW.js +1 -1
  119. package/dist/api/compiler/module-resolution-types.js +6 -6
  120. package/dist/api/compiler/module-resolution.d.ts +10 -1
  121. package/dist/api/compiler/module-resolution.js +115 -84
  122. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  123. package/dist/api/compiler/module-specifiers.js +24 -18
  124. package/dist/api/compiler/name-resolver.js +74 -65
  125. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  126. package/dist/api/compiler/node-builder-names.js +210 -90
  127. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  128. package/dist/api/compiler/node-builder-reuse.js +23 -22
  129. package/dist/api/compiler/node-builder.d.ts +18 -1
  130. package/dist/api/compiler/node-builder.js +191 -102
  131. package/dist/api/compiler/option-declarations.d.ts +2 -6
  132. package/dist/api/compiler/option-declarations.js +315 -375
  133. package/dist/api/compiler/options.d.ts +15 -33
  134. package/dist/api/compiler/options.js +21 -54
  135. package/dist/api/compiler/output-paths.d.ts +4 -1
  136. package/dist/api/compiler/output-paths.js +6 -11
  137. package/dist/api/compiler/package-json.d.ts +3 -3
  138. package/dist/api/compiler/package-json.js +11 -10
  139. package/dist/api/compiler/parallel-parse.d.ts +3 -2
  140. package/dist/api/compiler/parallel-parse.js +17 -5
  141. package/dist/api/compiler/parser.d.ts +40 -19
  142. package/dist/api/compiler/parser.js +308 -216
  143. package/dist/api/compiler/path.d.ts +9 -0
  144. package/dist/api/compiler/path.js +20 -3
  145. package/dist/api/compiler/printer/emit-context.d.ts +5 -1
  146. package/dist/api/compiler/printer/emit-context.js +20 -1
  147. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  148. package/dist/api/compiler/printer/factory-base.js +7 -3
  149. package/dist/api/compiler/printer/factory.js +3 -1
  150. package/dist/api/compiler/printer/helpers.js +10 -1
  151. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  152. package/dist/api/compiler/printer/name-generator.js +35 -16
  153. package/dist/api/compiler/printer/printer.d.ts +49 -2
  154. package/dist/api/compiler/printer/printer.js +539 -293
  155. package/dist/api/compiler/printer/utilities.js +149 -147
  156. package/dist/api/compiler/program-checker.d.ts +12 -2
  157. package/dist/api/compiler/program-checker.js +88 -34
  158. package/dist/api/compiler/program-utilities.d.ts +3 -1
  159. package/dist/api/compiler/program-utilities.js +28 -15
  160. package/dist/api/compiler/program.d.ts +4 -6
  161. package/dist/api/compiler/program.js +74 -87
  162. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  163. package/dist/api/compiler/pseudo-bigint.js +18 -0
  164. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  165. package/dist/api/compiler/regexp-checker.js +93 -76
  166. package/dist/api/compiler/relations.d.ts +27 -4
  167. package/dist/api/compiler/relations.js +347 -180
  168. package/dist/api/compiler/reparser.js +60 -56
  169. package/dist/api/compiler/scanner.d.ts +19 -2
  170. package/dist/api/compiler/scanner.js +123 -108
  171. package/dist/api/compiler/shared-results.d.ts +463 -0
  172. package/dist/api/compiler/shared-results.js +2128 -0
  173. package/dist/api/compiler/sourcemap.js +2 -2
  174. package/dist/api/compiler/symbol-accessibility.js +87 -74
  175. package/dist/api/compiler/symbol.d.ts +23 -14
  176. package/dist/api/compiler/symbol.js +23 -11
  177. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  178. package/dist/api/compiler/transformers/alias-references.js +247 -139
  179. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  180. package/dist/api/compiler/transformers/async.d.ts +0 -1
  181. package/dist/api/compiler/transformers/async.js +64 -77
  182. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  183. package/dist/api/compiler/transformers/class-fields.js +81 -78
  184. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  185. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  186. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  187. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  188. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  189. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  190. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  191. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  192. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  193. package/dist/api/compiler/transformers/declarations.js +305 -238
  194. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  195. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  196. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  197. package/dist/api/compiler/transformers/destructuring.js +19 -18
  198. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  199. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  200. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  201. package/dist/api/compiler/transformers/for-await.js +25 -25
  202. package/dist/api/compiler/transformers/import-elision.js +14 -14
  203. package/dist/api/compiler/transformers/jsx.js +12 -12
  204. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  205. package/dist/api/compiler/transformers/module.js +8 -8
  206. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  207. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  208. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  209. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  210. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  211. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  212. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  213. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  214. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  215. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  216. package/dist/api/compiler/transformers/using.js +12 -12
  217. package/dist/api/compiler/transformers/utilities.js +77 -77
  218. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  219. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  220. package/dist/api/compiler/tsconfig.d.ts +10 -2
  221. package/dist/api/compiler/tsconfig.js +136 -48
  222. package/dist/api/compiler/type-printer.js +40 -3
  223. package/dist/api/compiler/types.d.ts +2 -1
  224. package/dist/api/library/ast.generated.d.ts +42 -39
  225. package/dist/api/library/ast.generated.js +1 -1
  226. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  227. package/dist/api/library/compiler-options.generated.js +1 -1
  228. package/dist/api/library/disk.js +12 -1
  229. package/dist/api/library/enums.generated.d.ts +206 -206
  230. package/dist/api/library/enums.generated.js +206 -206
  231. package/dist/api/library/nodes.js +26 -26
  232. package/package.json +9 -9
  233. package/src/compiler/ast-utilities.ts +99 -7
  234. package/src/compiler/ast.ts +58 -26
  235. package/src/compiler/binder.ts +39 -4
  236. package/src/compiler/character-codes.ts +2 -2
  237. package/src/compiler/checker-calls.ts +79 -9
  238. package/src/compiler/checker-classes.ts +78 -24
  239. package/src/compiler/checker-contextual.ts +6 -1
  240. package/src/compiler/checker-declarations.ts +31 -4
  241. package/src/compiler/checker-declared-types.ts +8 -5
  242. package/src/compiler/checker-decorators.ts +1 -1
  243. package/src/compiler/checker-deprecation.ts +29 -8
  244. package/src/compiler/checker-destructuring.ts +10 -3
  245. package/src/compiler/checker-emit-helpers.ts +1 -0
  246. package/src/compiler/checker-emit-resolver.ts +16 -6
  247. package/src/compiler/checker-expressions.ts +79 -46
  248. package/src/compiler/checker-functions.ts +21 -6
  249. package/src/compiler/checker-generated-code.ts +2 -22
  250. package/src/compiler/checker-grammar.ts +136 -62
  251. package/src/compiler/checker-heritage.ts +22 -21
  252. package/src/compiler/checker-inference.ts +514 -82
  253. package/src/compiler/checker-iteration.ts +18 -31
  254. package/src/compiler/checker-javascript.ts +1 -1
  255. package/src/compiler/checker-jsdoc.ts +50 -27
  256. package/src/compiler/checker-jsx.ts +26 -4
  257. package/src/compiler/checker-members.ts +200 -56
  258. package/src/compiler/checker-modules.ts +332 -65
  259. package/src/compiler/checker-narrowing.ts +98 -19
  260. package/src/compiler/checker-object-literals.ts +3 -0
  261. package/src/compiler/checker-operators.ts +11 -4
  262. package/src/compiler/checker-property-access.ts +7 -2
  263. package/src/compiler/checker-services.ts +39 -12
  264. package/src/compiler/checker-signatures.ts +15 -1
  265. package/src/compiler/checker-source-file.ts +39 -13
  266. package/src/compiler/checker-statements.ts +3 -2
  267. package/src/compiler/checker-symbol-types.ts +29 -6
  268. package/src/compiler/checker-symbols.ts +158 -15
  269. package/src/compiler/checker-type-factory.ts +124 -23
  270. package/src/compiler/checker-type-nodes.ts +46 -3
  271. package/src/compiler/checker-type-operators.ts +83 -26
  272. package/src/compiler/checker-types.ts +147 -4
  273. package/src/compiler/checker-unused.ts +9 -14
  274. package/src/compiler/checker.ts +203 -39
  275. package/src/compiler/command-line.ts +28 -28
  276. package/src/compiler/compile-program.ts +167 -27
  277. package/src/compiler/decoder.ts +13 -4
  278. package/src/compiler/diagnostic-messages.ts +1973 -1892
  279. package/src/compiler/diagnostics.ts +84 -3
  280. package/src/compiler/emitter.ts +57 -8
  281. package/src/compiler/encoder.ts +23 -8
  282. package/src/compiler/file-include.ts +9 -3
  283. package/src/compiler/file-loader.ts +197 -38
  284. package/src/compiler/help.ts +10 -14
  285. package/src/compiler/incremental.ts +165 -30
  286. package/src/compiler/init.ts +2 -7
  287. package/src/compiler/instantiation.ts +77 -22
  288. package/src/compiler/jsdoc.ts +3 -1
  289. package/src/compiler/link-tables.ts +82 -37
  290. package/src/compiler/locales/cs-CZ.ts +1 -1
  291. package/src/compiler/locales/de-DE.ts +1 -1
  292. package/src/compiler/locales/es-ES.ts +1 -1
  293. package/src/compiler/locales/fr-FR.ts +1 -1
  294. package/src/compiler/locales/it-IT.ts +1 -1
  295. package/src/compiler/locales/ja-JP.ts +1 -1
  296. package/src/compiler/locales/ko-KR.ts +1 -1
  297. package/src/compiler/locales/pl-PL.ts +1 -1
  298. package/src/compiler/locales/pt-BR.ts +1 -1
  299. package/src/compiler/locales/ru-RU.ts +1 -1
  300. package/src/compiler/locales/tr-TR.ts +1 -1
  301. package/src/compiler/locales/zh-CN.ts +1 -1
  302. package/src/compiler/locales/zh-TW.ts +1 -1
  303. package/src/compiler/module-resolution.ts +44 -8
  304. package/src/compiler/module-specifiers.ts +62 -20
  305. package/src/compiler/name-resolver.ts +9 -1
  306. package/src/compiler/node-builder-names.ts +236 -54
  307. package/src/compiler/node-builder-pseudo.ts +4 -7
  308. package/src/compiler/node-builder-reuse.ts +5 -4
  309. package/src/compiler/node-builder.ts +130 -31
  310. package/src/compiler/option-declarations.ts +33 -103
  311. package/src/compiler/options.ts +23 -62
  312. package/src/compiler/output-paths.ts +5 -18
  313. package/src/compiler/package-entrypoints.ts +345 -0
  314. package/src/compiler/package-json.ts +4 -4
  315. package/src/compiler/parallel-check.ts +326 -52
  316. package/src/compiler/parallel-emit.ts +320 -0
  317. package/src/compiler/parallel-parse.ts +16 -5
  318. package/src/compiler/parse-thread.ts +3 -0
  319. package/src/compiler/parser.ts +156 -39
  320. package/src/compiler/path.ts +22 -2
  321. package/src/compiler/printer/emit-context.ts +21 -0
  322. package/src/compiler/printer/factory-base.ts +10 -3
  323. package/src/compiler/printer/factory.ts +4 -1
  324. package/src/compiler/printer/helpers.ts +10 -1
  325. package/src/compiler/printer/name-generator.ts +24 -2
  326. package/src/compiler/printer/printer.ts +266 -30
  327. package/src/compiler/printer/utilities.ts +8 -2
  328. package/src/compiler/program-checker.ts +57 -5
  329. package/src/compiler/program-utilities.ts +23 -10
  330. package/src/compiler/program.ts +18 -26
  331. package/src/compiler/pseudo-bigint.ts +17 -0
  332. package/src/compiler/regexp-checker.ts +63 -30
  333. package/src/compiler/relations.ts +240 -77
  334. package/src/compiler/reparser.ts +7 -2
  335. package/src/compiler/scanner.ts +109 -79
  336. package/src/compiler/shared-results.ts +2414 -0
  337. package/src/compiler/show-config.ts +18 -1
  338. package/src/compiler/sourcemap.ts +2 -2
  339. package/src/compiler/symbol-accessibility.ts +26 -3
  340. package/src/compiler/symbol.ts +46 -24
  341. package/src/compiler/syntax-kind.ts +188 -187
  342. package/src/compiler/thread-entry.ts +64 -4
  343. package/src/compiler/transformers/alias-references.ts +123 -4
  344. package/src/compiler/transformers/async.ts +2 -17
  345. package/src/compiler/transformers/class-fields.ts +13 -12
  346. package/src/compiler/transformers/commonjs-module.ts +11 -7
  347. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  348. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  349. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  350. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  351. package/src/compiler/transformers/declarations.ts +134 -48
  352. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  353. package/src/compiler/transformers/destructuring.ts +4 -3
  354. package/src/compiler/transformers/external-module-info.ts +1 -1
  355. package/src/compiler/transformers/jsx.ts +2 -1
  356. package/src/compiler/transformers/reference-resolver.ts +83 -19
  357. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  358. package/src/compiler/transformers/syntax-facts.ts +2 -7
  359. package/src/compiler/transformers/type-eraser.ts +10 -1
  360. package/src/compiler/transformers/type-serialization.ts +3 -2
  361. package/src/compiler/transformers/visitor-base.ts +2 -1
  362. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  363. package/src/compiler/tsc-build.ts +66 -9
  364. package/src/compiler/tsc-cli.ts +7 -0
  365. package/src/compiler/tsc-compile.ts +284 -4
  366. package/src/compiler/tsc-watch.ts +74 -45
  367. package/src/compiler/tsconfig.ts +176 -19
  368. package/src/compiler/type-printer.ts +36 -2
  369. package/src/compiler/types.ts +2 -1
  370. package/src/library/ast.generated.ts +57 -41
  371. package/src/library/compiler-options.generated.ts +117 -103
  372. package/src/library/disk.ts +10 -1
  373. package/src/library/enums.generated.ts +196 -196
@@ -66,6 +66,7 @@ const textToKeyword = new Map([
66
66
  ['return', 106 /* SyntaxKind.ReturnKeyword */],
67
67
  ['satisfies', 152 /* SyntaxKind.SatisfiesKeyword */],
68
68
  ['set', 153 /* SyntaxKind.SetKeyword */],
69
+ ['source', 167 /* SyntaxKind.SourceKeyword */],
69
70
  ['static', 125 /* SyntaxKind.StaticKeyword */],
70
71
  ['string', 154 /* SyntaxKind.StringKeyword */],
71
72
  ['super', 107 /* SyntaxKind.SuperKeyword */],
@@ -154,7 +155,7 @@ const textToToken = new Map([
154
155
  ['`', 61 /* SyntaxKind.BacktickToken */],
155
156
  ]);
156
157
  const tokenToText = [];
157
- for (let kind = 0; kind <= 166 /* SyntaxKind.LastToken */; kind++)
158
+ for (let kind = 0; kind <= 167 /* SyntaxKind.LastToken */; kind++)
158
159
  tokenToText.push('');
159
160
  for (const [text, kind] of textToToken)
160
161
  tokenToText[kind] = text;
@@ -1209,36 +1210,21 @@ export class Scanner {
1209
1210
  case 64 /* CharacterCodes.at */:
1210
1211
  this.pos = (this.pos + 1) | 0;
1211
1212
  return (this.token = 59 /* SyntaxKind.AtToken */);
1212
- case 92 /* CharacterCodes.backslash */: {
1213
- const codePoint = this.peekUnicodeEscape();
1214
- if (codePoint >= 0 && isIdentifierStart(codePoint)) {
1215
- const head = String.fromCodePoint(this.scanUnicodeEscape(true));
1216
- this.setValue(head + this.scanIdentifierParts());
1213
+ case 92 /* CharacterCodes.backslash */:
1214
+ if (this.scanIdentifier(0, 0 /* IdentifierVariant.Standard */))
1217
1215
  return (this.token = getIdentifierToken(this.tokenValue));
1218
- }
1219
1216
  return this.scanInvalidCharacter();
1220
- }
1221
1217
  case 35 /* CharacterCodes.hash */:
1222
1218
  if ((chars[this.pos + 1] | 0) === 33 /* CharacterCodes.exclamation */) {
1223
1219
  if (this.pos === 0) {
1224
1220
  this.pos = scanShebangTrivia(this.text, 0) | 0;
1225
1221
  continue;
1226
1222
  }
1227
- this.errorAt(1843 /* Diagnostics.X_can_only_be_used_at_the_start_of_a_file */, this.pos, 2, noArgs);
1228
- this.pos = (this.pos + 1) | 0;
1223
+ this.errorAt(1863 /* Diagnostics.X_can_only_be_used_at_the_start_of_a_file */, this.pos, 2, noArgs);
1224
+ this.pos = (this.pos + 2) | 0;
1229
1225
  return (this.token = 0 /* SyntaxKind.Unknown */);
1230
1226
  }
1231
- if ((chars[this.pos + 1] | 0) === 92 /* CharacterCodes.backslash */) {
1232
- this.pos = (this.pos + 1) | 0;
1233
- const codePoint = this.peekUnicodeEscape();
1234
- if (codePoint >= 0 && isIdentifierStart(codePoint)) {
1235
- const head = '#' + String.fromCodePoint(this.scanUnicodeEscape(true));
1236
- this.setValue(head + this.scanIdentifierParts());
1237
- return (this.token = 80 /* SyntaxKind.PrivateIdentifier */);
1238
- }
1239
- this.pos = (this.pos - 1) | 0;
1240
- }
1241
- if (!this.scanIdentifier(1)) {
1227
+ if (!this.scanIdentifier(1, 0 /* IdentifierVariant.Standard */)) {
1242
1228
  this.errorAt(94 /* Diagnostics.Invalid_character */, this.pos - 1, 1, noArgs);
1243
1229
  this.setValue('#');
1244
1230
  }
@@ -1246,11 +1232,11 @@ export class Scanner {
1246
1232
  default: {
1247
1233
  if (ch < 0)
1248
1234
  return (this.token = 1 /* SyntaxKind.EndOfFile */);
1249
- if (this.scanIdentifier(0))
1235
+ if (this.scanIdentifier(0, 0 /* IdentifierVariant.Standard */))
1250
1236
  return (this.token = this.identifierKind());
1251
1237
  const codePoint = this.codePoint();
1252
1238
  if (codePoint === 65533 /* CharacterCodes.replacementCharacter */) {
1253
- this.errorAt(405 /* Diagnostics.File_appears_to_be_binary */, 0, 0, noArgs);
1239
+ this.errorAt(403 /* Diagnostics.File_appears_to_be_binary */, 0, 0, noArgs);
1254
1240
  this.pos = this.end;
1255
1241
  return (this.token = 7 /* SyntaxKind.NonTextFileMarkerTrivia */);
1256
1242
  }
@@ -1441,14 +1427,38 @@ export class Scanner {
1441
1427
  return;
1442
1428
  this.commentDirectives.push(new CommentDirective(start, end, kind));
1443
1429
  }
1444
- /** @internal Scans an identifier after `prefixLength` units; sets the token value. */
1445
- scanIdentifier(prefixLength) {
1430
+ /**
1431
+ * @internal Scans an identifier after `prefixLength` units; sets the token value. `variant`
1432
+ * decides the identifier parts: JSX and JSDoc names also take `-`, and regular expression group
1433
+ * names take a surrogate pair written as two `\u` escapes.
1434
+ */
1435
+ scanIdentifier(prefixLength, variant) {
1446
1436
  const text = this.text;
1447
1437
  const chars = this.chars;
1448
1438
  const start = this.pos;
1449
1439
  this.pos = (this.pos + prefixLength) | 0;
1440
+ const identifierStart = this.pos;
1450
1441
  let ch = this.char();
1451
- if (isASCIILetter(ch) || ch === 95 /* CharacterCodes._ */ || ch === 36 /* CharacterCodes.$ */) {
1442
+ if (variant === 1 /* IdentifierVariant.JSX */) {
1443
+ if (isASCIILetter(ch) || ch === 95 /* CharacterCodes._ */ || ch === 36 /* CharacterCodes.$ */) {
1444
+ // ASCII names, as the general loop below scans them.
1445
+ let pos = (this.pos + 1) | 0;
1446
+ const end = this.end;
1447
+ while (pos < end) {
1448
+ const c = chars[pos] | 0;
1449
+ if (!isASCIIIdentifierPart(c) && c !== 45 /* CharacterCodes.minus */)
1450
+ break;
1451
+ pos = (pos + 1) | 0;
1452
+ }
1453
+ const next = pos < end ? chars[pos] | 0 : -1 /* CharacterCodes.EOF */;
1454
+ if (next <= 127 /* CharacterCodes.maxAsciiCharacter */ && next !== 92 /* CharacterCodes.backslash */) {
1455
+ this.pos = pos;
1456
+ this.setValueSlice(start, pos);
1457
+ return true;
1458
+ }
1459
+ }
1460
+ }
1461
+ else if (isASCIILetter(ch) || ch === 95 /* CharacterCodes._ */ || ch === 36 /* CharacterCodes.$ */) {
1452
1462
  // Fast path for ASCII identifiers, which also hashes the units for interning.
1453
1463
  let pos = (this.pos + 1) | 0;
1454
1464
  const end = this.end;
@@ -1472,35 +1482,47 @@ export class Scanner {
1472
1482
  this.hashEnd = pos;
1473
1483
  return true;
1474
1484
  }
1475
- this.pos = (start + prefixLength) | 0;
1476
1485
  }
1486
+ this.pos = identifierStart;
1487
+ const languageVariant = variant === 1 /* IdentifierVariant.JSX */ ? 1 /* LanguageVariant.JSX */ : 0 /* LanguageVariant.Standard */;
1477
1488
  ch = this.codePoint();
1478
- if (!isIdentifierStart(ch))
1479
- return false;
1480
- do {
1481
- this.pos = (this.pos + charSize(ch)) | 0;
1482
- ch = this.codePoint();
1483
- } while (isIdentifierPart(ch));
1484
- if (ch === 92 /* CharacterCodes.backslash */)
1485
- this.setValue(text.substring(start, this.pos) + this.scanIdentifierParts());
1486
- else
1487
- this.setValueSlice(start, this.pos);
1488
- return true;
1489
+ if (isIdentifierStart(ch)) {
1490
+ do {
1491
+ this.pos = (this.pos + charSize(ch)) | 0;
1492
+ ch = this.codePoint();
1493
+ } while (isIdentifierPart(ch, languageVariant));
1494
+ if (ch === 92 /* CharacterCodes.backslash */)
1495
+ this.setValue(text.substring(start, this.pos) + this.scanIdentifierParts(variant));
1496
+ else
1497
+ this.setValueSlice(start, this.pos);
1498
+ return true;
1499
+ }
1500
+ if (ch === 92 /* CharacterCodes.backslash */) {
1501
+ const escaped = this.scanIdentifierEscape(true, variant);
1502
+ if (escaped >= 0) {
1503
+ const head = text.substring(start, identifierStart) + String.fromCodePoint(escaped);
1504
+ this.setValue(head + this.scanIdentifierParts(variant));
1505
+ return true;
1506
+ }
1507
+ }
1508
+ return false;
1489
1509
  }
1490
1510
  /** Scans identifier parts including `\u` escapes and returns their cooked text. */
1491
- scanIdentifierParts() {
1511
+ scanIdentifierParts(variant) {
1512
+ const languageVariant = variant === 1 /* IdentifierVariant.JSX */ ? 1 /* LanguageVariant.JSX */ : 0 /* LanguageVariant.Standard */;
1492
1513
  let result = '';
1493
1514
  let start = this.pos;
1494
1515
  for (;;) {
1495
1516
  const ch = this.codePoint();
1496
- if (isIdentifierPart(ch)) {
1517
+ if (isIdentifierPart(ch, languageVariant)) {
1497
1518
  this.pos = (this.pos + charSize(ch)) | 0;
1498
1519
  continue;
1499
1520
  }
1500
1521
  if (ch === 92 /* CharacterCodes.backslash */) {
1501
- const escaped = this.peekUnicodeEscape();
1502
- if (escaped >= 0 && isIdentifierPart(escaped)) {
1503
- result += this.text.substring(start, this.pos) + String.fromCodePoint(this.scanUnicodeEscape(true));
1522
+ const escapeStart = this.pos;
1523
+ const escaped = this.scanIdentifierEscape(false, variant);
1524
+ if (escaped >= 0) {
1525
+ result += this.text.substring(start, escapeStart) + String.fromCodePoint(escaped);
1504
1526
  start = this.pos;
1505
1527
  continue;
1506
1528
  }
@@ -1509,6 +1531,37 @@ export class Scanner {
1509
1531
  }
1510
1532
  return start === this.pos ? result : result + this.text.substring(start, this.pos);
1511
1533
  }
1534
+ /**
1535
+ * At `\`: scans a `\u` escape of an identifier start (`isStart`) or part and returns its code point,
1536
+ * or returns -1 and leaves the scanner unchanged.
1537
+ */
1538
+ scanIdentifierEscape(isStart, variant) {
1539
+ const languageVariant = variant === 1 /* IdentifierVariant.JSX */ ? 1 /* LanguageVariant.JSX */ : 0 /* LanguageVariant.Standard */;
1540
+ const escaped = this.peekUnicodeEscape();
1541
+ if (escaped >= 0 && (isStart ? isIdentifierStart(escaped) : isIdentifierPart(escaped, languageVariant)))
1542
+ return this.scanUnicodeEscape(true);
1543
+ // Group names in regular expressions, in Unicode mode or not, take `\u` HexLeadSurrogate `\u`
1544
+ // HexTrailSurrogate as part of RegExpIdentifierName (tc39/ecma262#1869), but not the braced form.
1545
+ if (variant === 2 /* IdentifierVariant.RegExpGroupName */ &&
1546
+ this.peek(2) !== 123 /* CharacterCodes.openBrace */ &&
1547
+ escaped >= 0xd800 &&
1548
+ escaped <= 0xdbff) {
1549
+ const pos = this.pos;
1550
+ const flags = this.tokenFlags;
1551
+ this.scanUnicodeEscape(false);
1552
+ if (this.peek(2) !== 123 /* CharacterCodes.openBrace */) {
1553
+ const low = this.scanLowSurrogateEscape();
1554
+ if (low >= 0) {
1555
+ const codePoint = (escaped - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;
1556
+ if (isStart ? isIdentifierStart(codePoint) : isIdentifierPart(codePoint, languageVariant))
1557
+ return codePoint;
1558
+ }
1559
+ }
1560
+ this.pos = pos | 0;
1561
+ this.tokenFlags = flags;
1562
+ }
1563
+ return -1;
1564
+ }
1512
1565
  scanInvalidCharacter() {
1513
1566
  const size = charSize(this.codePoint());
1514
1567
  this.errorAt(94 /* Diagnostics.Invalid_character */, this.pos, size, noArgs);
@@ -1674,9 +1727,9 @@ export class Scanner {
1674
1727
  if ((flags & 4 /* EscapeSequenceScanningFlags.RegularExpression */) !== 0 &&
1675
1728
  (flags & 32 /* EscapeSequenceScanningFlags.AtomEscape */) === 0 &&
1676
1729
  ch !== 48 /* CharacterCodes._0 */)
1677
- this.errorAt(451 /* Diagnostics.Octal_escape_sequences_and_backreferences_are_not_allowed_in_a_character_class_If_this_was_intended_as_an_escape_sequence_use_the_syntax_0_instead */, start, this.pos - start, args);
1730
+ this.errorAt(449 /* Diagnostics.Octal_escape_sequences_and_backreferences_are_not_allowed_in_a_character_class_If_this_was_intended_as_an_escape_sequence_use_the_syntax_0_instead */, start, this.pos - start, args);
1678
1731
  else
1679
- this.errorAt(402 /* Diagnostics.Octal_escape_sequences_are_not_allowed_Use_the_syntax_0 */, start, this.pos - start, args);
1732
+ this.errorAt(400 /* Diagnostics.Octal_escape_sequences_are_not_allowed_Use_the_syntax_0 */, start, this.pos - start, args);
1680
1733
  return code;
1681
1734
  }
1682
1735
  return -2 /* EscapeValue.Raw */;
@@ -1687,9 +1740,9 @@ export class Scanner {
1687
1740
  if ((flags & 6 /* EscapeSequenceScanningFlags.ReportInvalidEscapeErrors */) !== 0) {
1688
1741
  if ((flags & 4 /* EscapeSequenceScanningFlags.RegularExpression */) !== 0 &&
1689
1742
  (flags & 32 /* EscapeSequenceScanningFlags.AtomEscape */) === 0)
1690
- this.errorAt(452 /* Diagnostics.Decimal_escape_sequences_and_backreferences_are_not_allowed_in_a_character_class */, start, this.pos - start, noArgs);
1743
+ this.errorAt(450 /* Diagnostics.Decimal_escape_sequences_and_backreferences_are_not_allowed_in_a_character_class */, start, this.pos - start, noArgs);
1691
1744
  else
1692
- this.errorAt(403 /* Diagnostics.Escape_sequence_0_is_not_allowed */, start, this.pos - start, [
1745
+ this.errorAt(401 /* Diagnostics.Escape_sequence_0_is_not_allowed */, start, this.pos - start, [
1693
1746
  this.text.substring(start, this.pos),
1694
1747
  ]);
1695
1748
  return ch;
@@ -1720,7 +1773,7 @@ export class Scanner {
1720
1773
  if (extended && (flags & 17 /* EscapeSequenceScanningFlags.AllowExtendedUnicodeEscape */) === 0) {
1721
1774
  this.tokenFlags |= 2048 /* TokenFlags.ContainsInvalidEscape */;
1722
1775
  if (reportErrors)
1723
- this.errorAt(453 /* Diagnostics.Unicode_escape_sequences_are_only_available_when_the_Unicode_u_flag_or_the_Unicode_Sets_v_flag_is_set */, start, this.pos - start, noArgs);
1776
+ this.errorAt(451 /* Diagnostics.Unicode_escape_sequences_are_only_available_when_the_Unicode_u_flag_or_the_Unicode_Sets_v_flag_is_set */, start, this.pos - start, noArgs);
1724
1777
  }
1725
1778
  if (codePoint < 0)
1726
1779
  return -2 /* EscapeValue.Raw */;
@@ -1780,7 +1833,7 @@ export class Scanner {
1780
1833
  ((flags & 4 /* EscapeSequenceScanningFlags.RegularExpression */) !== 0 &&
1781
1834
  (flags & 8 /* EscapeSequenceScanningFlags.AnnexB */) === 0 &&
1782
1835
  isIdentifierPart(ch)))
1783
- this.errorAt(450 /* Diagnostics.This_character_cannot_be_escaped_in_a_regular_expression */, start, this.pos - start, noArgs);
1836
+ this.errorAt(448 /* Diagnostics.This_character_cannot_be_escaped_in_a_regular_expression */, start, this.pos - start, noArgs);
1784
1837
  return ch;
1785
1838
  }
1786
1839
  }
@@ -1898,7 +1951,7 @@ export class Scanner {
1898
1951
  this.pos = (this.pos + 1) | 0;
1899
1952
  if (this.char() === 95 /* CharacterCodes._ */) {
1900
1953
  this.tokenFlags |= 512 /* TokenFlags.ContainsSeparator */ | 16384 /* TokenFlags.ContainsInvalidSeparator */;
1901
- this.errorAt(1342 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos, 1, noArgs);
1954
+ this.errorAt(1353 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos, 1, noArgs);
1902
1955
  this.pos = start | 0;
1903
1956
  this.scanNumberFragment();
1904
1957
  }
@@ -1956,7 +2009,7 @@ export class Scanner {
1956
2009
  }
1957
2010
  const raw = this.withoutSeparators(start, end);
1958
2011
  if ((this.tokenFlags & 8192 /* TokenFlags.ContainsLeadingZero */) !== 0) {
1959
- this.errorAt(404 /* Diagnostics.Decimals_with_leading_zeros_are_not_allowed */, start, this.pos - start, noArgs);
2012
+ this.errorAt(402 /* Diagnostics.Decimals_with_leading_zeros_are_not_allowed */, start, this.pos - start, noArgs);
1960
2013
  this.setValue(String(Number(raw)));
1961
2014
  return 8 /* SyntaxKind.NumericLiteral */;
1962
2015
  }
@@ -1971,7 +2024,7 @@ export class Scanner {
1971
2024
  }
1972
2025
  if (isIdentifierStart(this.codePoint())) {
1973
2026
  const idStart = this.pos;
1974
- const id = this.scanIdentifierParts();
2027
+ const id = this.scanIdentifierParts(0 /* IdentifierVariant.Standard */);
1975
2028
  if (result !== 9 /* SyntaxKind.BigIntLiteral */ && id.length === 1 && this.chars[idStart] === 110 /* CharacterCodes.n */) {
1976
2029
  if ((this.tokenFlags & 16 /* TokenFlags.Scientific */) !== 0) {
1977
2030
  this.errorAt(286 /* Diagnostics.A_bigint_literal_cannot_use_exponential_notation */, start, this.pos - start, noArgs);
@@ -2008,9 +2061,9 @@ export class Scanner {
2008
2061
  else {
2009
2062
  this.tokenFlags |= 16384 /* TokenFlags.ContainsInvalidSeparator */;
2010
2063
  if (isPreviousTokenSeparator)
2011
- this.errorAt(1343 /* Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted */, this.pos, 1, noArgs);
2064
+ this.errorAt(1354 /* Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted */, this.pos, 1, noArgs);
2012
2065
  else
2013
- this.errorAt(1342 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos, 1, noArgs);
2066
+ this.errorAt(1353 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos, 1, noArgs);
2014
2067
  }
2015
2068
  }
2016
2069
  else {
@@ -2020,7 +2073,7 @@ export class Scanner {
2020
2073
  }
2021
2074
  if (isPreviousTokenSeparator) {
2022
2075
  this.tokenFlags |= 16384 /* TokenFlags.ContainsInvalidSeparator */;
2023
- this.errorAt(1342 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos - 1, 1, noArgs);
2076
+ this.errorAt(1353 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos - 1, 1, noArgs);
2024
2077
  }
2025
2078
  return count;
2026
2079
  }
@@ -2043,10 +2096,10 @@ export class Scanner {
2043
2096
  isPreviousTokenSeparator = true;
2044
2097
  }
2045
2098
  else if (isPreviousTokenSeparator) {
2046
- this.errorAt(1343 /* Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted */, this.pos, 1, noArgs);
2099
+ this.errorAt(1354 /* Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted */, this.pos, 1, noArgs);
2047
2100
  }
2048
2101
  else {
2049
- this.errorAt(1342 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos, 1, noArgs);
2102
+ this.errorAt(1353 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos, 1, noArgs);
2050
2103
  }
2051
2104
  }
2052
2105
  else {
@@ -2055,7 +2108,7 @@ export class Scanner {
2055
2108
  this.pos = (this.pos + 1) | 0;
2056
2109
  }
2057
2110
  if (isPreviousTokenSeparator)
2058
- this.errorAt(1342 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos - 1, 1, noArgs);
2111
+ this.errorAt(1353 /* Diagnostics.Numeric_separators_are_not_allowed_here */, this.pos - 1, 1, noArgs);
2059
2112
  return count;
2060
2113
  }
2061
2114
  scanHexNumber() {
@@ -2257,11 +2310,11 @@ export class Scanner {
2257
2310
  if (reportErrors) {
2258
2311
  const flag = regularExpressionFlag(ch);
2259
2312
  if (flag === 0 /* RegularExpressionFlags.None */)
2260
- this.errorAt(414 /* Diagnostics.Unknown_regular_expression_flag */, p, size, noArgs);
2313
+ this.errorAt(412 /* Diagnostics.Unknown_regular_expression_flag */, p, size, noArgs);
2261
2314
  else if ((flags & flag) !== 0)
2262
- this.errorAt(415 /* Diagnostics.Duplicate_regular_expression_flag */, p, size, noArgs);
2315
+ this.errorAt(413 /* Diagnostics.Duplicate_regular_expression_flag */, p, size, noArgs);
2263
2316
  else if (((flags | flag) & 96 /* RegularExpressionFlags.AnyUnicodeMode */) === 96 /* RegularExpressionFlags.AnyUnicodeMode */)
2264
- this.errorAt(417 /* Diagnostics.The_Unicode_u_flag_and_the_Unicode_Sets_v_flag_cannot_be_set_simultaneously */, p, size, noArgs);
2317
+ this.errorAt(415 /* Diagnostics.The_Unicode_u_flag_and_the_Unicode_Sets_v_flag_cannot_be_set_simultaneously */, p, size, noArgs);
2265
2318
  else {
2266
2319
  flags |= flag;
2267
2320
  this.checkRegularExpressionFlagAvailability(flag, p, size);
@@ -2297,7 +2350,7 @@ export class Scanner {
2297
2350
  else
2298
2351
  return;
2299
2352
  if (this.languageVersion() < availableFrom)
2300
- this.errorAt(416 /* Diagnostics.This_regular_expression_flag_is_only_available_when_targeting_0_or_later */, pos, size, [
2353
+ this.errorAt(414 /* Diagnostics.This_regular_expression_flag_is_only_available_when_targeting_0_or_later */, pos, size, [
2301
2354
  regularExpressionFlagName(availableFrom),
2302
2355
  ]);
2303
2356
  }
@@ -2373,18 +2426,8 @@ export class Scanner {
2373
2426
  scanJsxIdentifier() {
2374
2427
  if (!tokenIsIdentifierOrKeyword(this.token))
2375
2428
  return this.token;
2376
- let value = this.getTokenValue();
2377
- while (this.pos < this.end) {
2378
- if (this.char() === 45 /* CharacterCodes.minus */) {
2379
- value += '-';
2380
- this.pos = (this.pos + 1) | 0;
2381
- continue;
2382
- }
2383
- const pos = this.pos;
2384
- value += this.scanIdentifierParts();
2385
- if (this.pos === pos)
2386
- break;
2387
- }
2429
+ // An identifier or keyword is scanned: append a following `-` and the rest of the name.
2430
+ const value = this.getTokenValue() + this.scanIdentifierParts(1 /* IdentifierVariant.JSX */);
2388
2431
  this.setValue(value);
2389
2432
  return (this.token = getIdentifierToken(value));
2390
2433
  }
@@ -2455,7 +2498,6 @@ export class Scanner {
2455
2498
  scanJSDocToken() {
2456
2499
  this.fullStartPos = this.pos | 0;
2457
2500
  this.tokenFlags = 0 /* TokenFlags.None */;
2458
- const text = this.text;
2459
2501
  const chars = this.chars;
2460
2502
  if (this.pos >= this.end)
2461
2503
  return (this.token = 1 /* SyntaxKind.EndOfFile */);
@@ -2506,40 +2548,13 @@ export class Scanner {
2506
2548
  return (this.token = 61 /* SyntaxKind.BacktickToken */);
2507
2549
  case 35 /* CharacterCodes.hash */:
2508
2550
  return (this.token = 62 /* SyntaxKind.HashToken */);
2509
- case 92 /* CharacterCodes.backslash */: {
2510
- this.pos = (this.pos - 1) | 0;
2511
- const codePoint = this.peekUnicodeEscape();
2512
- if (codePoint >= 0 && isIdentifierStart(codePoint)) {
2513
- const head = String.fromCodePoint(this.scanUnicodeEscape(true));
2514
- this.setValue(head + this.scanIdentifierParts());
2515
- return (this.token = getIdentifierToken(this.tokenValue));
2516
- }
2517
- this.pos = (this.pos + 1) | 0;
2518
- return (this.token = 0 /* SyntaxKind.Unknown */);
2519
- }
2520
- }
2521
- if (!isIdentifierStart(ch))
2522
- return (this.token = 0 /* SyntaxKind.Unknown */);
2523
- let last = ch;
2524
- while (this.pos < this.end) {
2525
- const unit = this.chars[this.pos] | 0;
2526
- if (unit < 0x80) {
2527
- last = unit;
2528
- if (!isASCIIIdentifierPart(unit) && unit !== 45 /* CharacterCodes.minus */)
2529
- break;
2530
- this.pos = (this.pos + 1) | 0;
2531
- continue;
2532
- }
2533
- last = this.codePointAt(this.pos, this.end);
2534
- if (!isIdentifierPart(last) && last !== 45 /* CharacterCodes.minus */)
2535
- break;
2536
- this.pos = (this.pos + charSize(last)) | 0;
2537
2551
  }
2538
- if (last === 92 /* CharacterCodes.backslash */)
2539
- this.setValue(text.substring(this.tokenStart, this.pos) + this.scanIdentifierParts());
2540
- else
2541
- this.setValueSlice(this.tokenStart, this.pos);
2542
- return (this.token = this.identifierKind());
2552
+ // JSDoc names take `-`, as JSX names do.
2553
+ this.pos = this.tokenStart;
2554
+ if (this.scanIdentifier(0, 1 /* IdentifierVariant.JSX */))
2555
+ return (this.token = this.identifierKind());
2556
+ this.pos = (this.tokenStart + charSize(ch)) | 0;
2557
+ return (this.token = 0 /* SyntaxKind.Unknown */);
2543
2558
  }
2544
2559
  }
2545
2560
  const mergeConflictMarkerLength = 7;