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
@@ -98,6 +98,7 @@ const textToKeyword: Map<string, SyntaxKind> = new Map<string, SyntaxKind>([
98
98
  ['return', SyntaxKind.ReturnKeyword],
99
99
  ['satisfies', SyntaxKind.SatisfiesKeyword],
100
100
  ['set', SyntaxKind.SetKeyword],
101
+ ['source', SyntaxKind.SourceKeyword],
101
102
  ['static', SyntaxKind.StaticKeyword],
102
103
  ['string', SyntaxKind.StringKeyword],
103
104
  ['super', SyntaxKind.SuperKeyword],
@@ -1316,15 +1317,10 @@ export class Scanner {
1316
1317
  case CharacterCodes.at:
1317
1318
  this.pos = (this.pos + 1) | 0;
1318
1319
  return (this.token = SyntaxKind.AtToken);
1319
- case CharacterCodes.backslash: {
1320
- const codePoint = this.peekUnicodeEscape();
1321
- if (codePoint >= 0 && isIdentifierStart(codePoint)) {
1322
- const head = String.fromCodePoint(this.scanUnicodeEscape(true));
1323
- this.setValue(head + this.scanIdentifierParts());
1320
+ case CharacterCodes.backslash:
1321
+ if (this.scanIdentifier(0, IdentifierVariant.Standard))
1324
1322
  return (this.token = getIdentifierToken(this.tokenValue));
1325
- }
1326
1323
  return this.scanInvalidCharacter();
1327
- }
1328
1324
  case CharacterCodes.hash:
1329
1325
  if ((chars[this.pos + 1] | 0) === CharacterCodes.exclamation) {
1330
1326
  if (this.pos === 0) {
@@ -1332,27 +1328,17 @@ export class Scanner {
1332
1328
  continue;
1333
1329
  }
1334
1330
  this.errorAt(Diagnostics.X_can_only_be_used_at_the_start_of_a_file, this.pos, 2, noArgs);
1335
- this.pos = (this.pos + 1) | 0;
1331
+ this.pos = (this.pos + 2) | 0;
1336
1332
  return (this.token = SyntaxKind.Unknown);
1337
1333
  }
1338
- if ((chars[this.pos + 1] | 0) === CharacterCodes.backslash) {
1339
- this.pos = (this.pos + 1) | 0;
1340
- const codePoint = this.peekUnicodeEscape();
1341
- if (codePoint >= 0 && isIdentifierStart(codePoint)) {
1342
- const head = '#' + String.fromCodePoint(this.scanUnicodeEscape(true));
1343
- this.setValue(head + this.scanIdentifierParts());
1344
- return (this.token = SyntaxKind.PrivateIdentifier);
1345
- }
1346
- this.pos = (this.pos - 1) | 0;
1347
- }
1348
- if (!this.scanIdentifier(1)) {
1334
+ if (!this.scanIdentifier(1, IdentifierVariant.Standard)) {
1349
1335
  this.errorAt(Diagnostics.Invalid_character, this.pos - 1, 1, noArgs);
1350
1336
  this.setValue('#');
1351
1337
  }
1352
1338
  return (this.token = SyntaxKind.PrivateIdentifier);
1353
1339
  default: {
1354
1340
  if (ch < 0) return (this.token = SyntaxKind.EndOfFile);
1355
- if (this.scanIdentifier(0)) return (this.token = this.identifierKind());
1341
+ if (this.scanIdentifier(0, IdentifierVariant.Standard)) return (this.token = this.identifierKind());
1356
1342
  const codePoint = this.codePoint();
1357
1343
  if (codePoint === CharacterCodes.replacementCharacter) {
1358
1344
  this.errorAt(Diagnostics.File_appears_to_be_binary, 0, 0, noArgs);
@@ -1534,14 +1520,36 @@ export class Scanner {
1534
1520
  this.commentDirectives.push(new CommentDirective(start, end, kind));
1535
1521
  }
1536
1522
 
1537
- /** @internal Scans an identifier after `prefixLength` units; sets the token value. */
1538
- scanIdentifier(prefixLength: number): boolean {
1523
+ /**
1524
+ * @internal Scans an identifier after `prefixLength` units; sets the token value. `variant`
1525
+ * decides the identifier parts: JSX and JSDoc names also take `-`, and regular expression group
1526
+ * names take a surrogate pair written as two `\u` escapes.
1527
+ */
1528
+ scanIdentifier(prefixLength: number, variant: IdentifierVariant): boolean {
1539
1529
  const text = this.text;
1540
1530
  const chars = this.chars;
1541
1531
  const start = this.pos;
1542
1532
  this.pos = (this.pos + prefixLength) | 0;
1533
+ const identifierStart = this.pos;
1543
1534
  let ch = this.char();
1544
- if (isASCIILetter(ch) || ch === CharacterCodes._ || ch === CharacterCodes.$) {
1535
+ if (variant === IdentifierVariant.JSX) {
1536
+ if (isASCIILetter(ch) || ch === CharacterCodes._ || ch === CharacterCodes.$) {
1537
+ // ASCII names, as the general loop below scans them.
1538
+ let pos = (this.pos + 1) | 0;
1539
+ const end = this.end;
1540
+ while (pos < end) {
1541
+ const c = chars[pos] | 0;
1542
+ if (!isASCIIIdentifierPart(c) && c !== CharacterCodes.minus) break;
1543
+ pos = (pos + 1) | 0;
1544
+ }
1545
+ const next = pos < end ? chars[pos] | 0 : CharacterCodes.EOF;
1546
+ if (next <= CharacterCodes.maxAsciiCharacter && next !== CharacterCodes.backslash) {
1547
+ this.pos = pos;
1548
+ this.setValueSlice(start, pos);
1549
+ return true;
1550
+ }
1551
+ }
1552
+ } else if (isASCIILetter(ch) || ch === CharacterCodes._ || ch === CharacterCodes.$) {
1545
1553
  // Fast path for ASCII identifiers, which also hashes the units for interning.
1546
1554
  let pos = (this.pos + 1) | 0;
1547
1555
  const end = this.end;
@@ -1563,33 +1571,47 @@ export class Scanner {
1563
1571
  this.hashEnd = pos;
1564
1572
  return true;
1565
1573
  }
1566
- this.pos = (start + prefixLength) | 0;
1567
1574
  }
1575
+ this.pos = identifierStart;
1576
+ const languageVariant = variant === IdentifierVariant.JSX ? LanguageVariant.JSX : LanguageVariant.Standard;
1568
1577
  ch = this.codePoint();
1569
- if (!isIdentifierStart(ch)) return false;
1570
- do {
1571
- this.pos = (this.pos + charSize(ch)) | 0;
1572
- ch = this.codePoint();
1573
- } while (isIdentifierPart(ch));
1574
- if (ch === CharacterCodes.backslash) this.setValue(text.substring(start, this.pos) + this.scanIdentifierParts());
1575
- else this.setValueSlice(start, this.pos);
1576
- return true;
1578
+ if (isIdentifierStart(ch)) {
1579
+ do {
1580
+ this.pos = (this.pos + charSize(ch)) | 0;
1581
+ ch = this.codePoint();
1582
+ } while (isIdentifierPart(ch, languageVariant));
1583
+ if (ch === CharacterCodes.backslash)
1584
+ this.setValue(text.substring(start, this.pos) + this.scanIdentifierParts(variant));
1585
+ else this.setValueSlice(start, this.pos);
1586
+ return true;
1587
+ }
1588
+ if (ch === CharacterCodes.backslash) {
1589
+ const escaped = this.scanIdentifierEscape(true, variant);
1590
+ if (escaped >= 0) {
1591
+ const head = text.substring(start, identifierStart) + String.fromCodePoint(escaped);
1592
+ this.setValue(head + this.scanIdentifierParts(variant));
1593
+ return true;
1594
+ }
1595
+ }
1596
+ return false;
1577
1597
  }
1578
1598
 
1579
1599
  /** Scans identifier parts including `\u` escapes and returns their cooked text. */
1580
- private scanIdentifierParts(): string {
1600
+ private scanIdentifierParts(variant: IdentifierVariant): string {
1601
+ const languageVariant = variant === IdentifierVariant.JSX ? LanguageVariant.JSX : LanguageVariant.Standard;
1581
1602
  let result = '';
1582
1603
  let start = this.pos;
1583
1604
  for (;;) {
1584
1605
  const ch = this.codePoint();
1585
- if (isIdentifierPart(ch)) {
1606
+ if (isIdentifierPart(ch, languageVariant)) {
1586
1607
  this.pos = (this.pos + charSize(ch)) | 0;
1587
1608
  continue;
1588
1609
  }
1589
1610
  if (ch === CharacterCodes.backslash) {
1590
- const escaped = this.peekUnicodeEscape();
1591
- if (escaped >= 0 && isIdentifierPart(escaped)) {
1592
- result += this.text.substring(start, this.pos) + String.fromCodePoint(this.scanUnicodeEscape(true));
1611
+ const escapeStart = this.pos;
1612
+ const escaped = this.scanIdentifierEscape(false, variant);
1613
+ if (escaped >= 0) {
1614
+ result += this.text.substring(start, escapeStart) + String.fromCodePoint(escaped);
1593
1615
  start = this.pos;
1594
1616
  continue;
1595
1617
  }
@@ -1599,6 +1621,39 @@ export class Scanner {
1599
1621
  return start === this.pos ? result : result + this.text.substring(start, this.pos);
1600
1622
  }
1601
1623
 
1624
+ /**
1625
+ * At `\`: scans a `\u` escape of an identifier start (`isStart`) or part and returns its code point,
1626
+ * or returns -1 and leaves the scanner unchanged.
1627
+ */
1628
+ private scanIdentifierEscape(isStart: boolean, variant: IdentifierVariant): number {
1629
+ const languageVariant = variant === IdentifierVariant.JSX ? LanguageVariant.JSX : LanguageVariant.Standard;
1630
+ const escaped = this.peekUnicodeEscape();
1631
+ if (escaped >= 0 && (isStart ? isIdentifierStart(escaped) : isIdentifierPart(escaped, languageVariant)))
1632
+ return this.scanUnicodeEscape(true);
1633
+ // Group names in regular expressions, in Unicode mode or not, take `\u` HexLeadSurrogate `\u`
1634
+ // HexTrailSurrogate as part of RegExpIdentifierName (tc39/ecma262#1869), but not the braced form.
1635
+ if (
1636
+ variant === IdentifierVariant.RegExpGroupName &&
1637
+ this.peek(2) !== CharacterCodes.openBrace &&
1638
+ escaped >= 0xd800 &&
1639
+ escaped <= 0xdbff
1640
+ ) {
1641
+ const pos = this.pos;
1642
+ const flags = this.tokenFlags;
1643
+ this.scanUnicodeEscape(false);
1644
+ if (this.peek(2) !== CharacterCodes.openBrace) {
1645
+ const low = this.scanLowSurrogateEscape();
1646
+ if (low >= 0) {
1647
+ const codePoint = (escaped - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;
1648
+ if (isStart ? isIdentifierStart(codePoint) : isIdentifierPart(codePoint, languageVariant)) return codePoint;
1649
+ }
1650
+ }
1651
+ this.pos = pos | 0;
1652
+ this.tokenFlags = flags;
1653
+ }
1654
+ return -1;
1655
+ }
1656
+
1602
1657
  private scanInvalidCharacter(): SyntaxKind {
1603
1658
  const size = charSize(this.codePoint());
1604
1659
  this.errorAt(Diagnostics.Invalid_character, this.pos, size, noArgs);
@@ -2080,7 +2135,7 @@ export class Scanner {
2080
2135
  }
2081
2136
  if (isIdentifierStart(this.codePoint())) {
2082
2137
  const idStart = this.pos;
2083
- const id = this.scanIdentifierParts();
2138
+ const id = this.scanIdentifierParts(IdentifierVariant.Standard);
2084
2139
  if (result !== SyntaxKind.BigIntLiteral && id.length === 1 && this.chars[idStart] === CharacterCodes.n) {
2085
2140
  if ((this.tokenFlags & TokenFlags.Scientific) !== 0) {
2086
2141
  this.errorAt(Diagnostics.A_bigint_literal_cannot_use_exponential_notation, start, this.pos - start, noArgs);
@@ -2472,17 +2527,8 @@ export class Scanner {
2472
2527
  /** Extends an identifier or keyword with `-` and further parts, as JSX names allow. */
2473
2528
  scanJsxIdentifier(): SyntaxKind {
2474
2529
  if (!tokenIsIdentifierOrKeyword(this.token)) return this.token;
2475
- let value = this.getTokenValue();
2476
- while (this.pos < this.end) {
2477
- if (this.char() === CharacterCodes.minus) {
2478
- value += '-';
2479
- this.pos = (this.pos + 1) | 0;
2480
- continue;
2481
- }
2482
- const pos = this.pos;
2483
- value += this.scanIdentifierParts();
2484
- if (this.pos === pos) break;
2485
- }
2530
+ // An identifier or keyword is scanned: append a following `-` and the rest of the name.
2531
+ const value = this.getTokenValue() + this.scanIdentifierParts(IdentifierVariant.JSX);
2486
2532
  this.setValue(value);
2487
2533
  return (this.token = getIdentifierToken(value));
2488
2534
  }
@@ -2556,7 +2602,6 @@ export class Scanner {
2556
2602
  scanJSDocToken(): SyntaxKind {
2557
2603
  this.fullStartPos = this.pos | 0;
2558
2604
  this.tokenFlags = TokenFlags.None;
2559
- const text = this.text;
2560
2605
  const chars = this.chars;
2561
2606
  if (this.pos >= this.end) return (this.token = SyntaxKind.EndOfFile);
2562
2607
  this.tokenStart = this.pos | 0;
@@ -2605,39 +2650,24 @@ export class Scanner {
2605
2650
  return (this.token = SyntaxKind.BacktickToken);
2606
2651
  case CharacterCodes.hash:
2607
2652
  return (this.token = SyntaxKind.HashToken);
2608
- case CharacterCodes.backslash: {
2609
- this.pos = (this.pos - 1) | 0;
2610
- const codePoint = this.peekUnicodeEscape();
2611
- if (codePoint >= 0 && isIdentifierStart(codePoint)) {
2612
- const head = String.fromCodePoint(this.scanUnicodeEscape(true));
2613
- this.setValue(head + this.scanIdentifierParts());
2614
- return (this.token = getIdentifierToken(this.tokenValue));
2615
- }
2616
- this.pos = (this.pos + 1) | 0;
2617
- return (this.token = SyntaxKind.Unknown);
2618
- }
2619
- }
2620
- if (!isIdentifierStart(ch)) return (this.token = SyntaxKind.Unknown);
2621
- let last = ch;
2622
- while (this.pos < this.end) {
2623
- const unit = this.chars[this.pos] | 0;
2624
- if (unit < 0x80) {
2625
- last = unit;
2626
- if (!isASCIIIdentifierPart(unit) && unit !== CharacterCodes.minus) break;
2627
- this.pos = (this.pos + 1) | 0;
2628
- continue;
2629
- }
2630
- last = this.codePointAt(this.pos, this.end);
2631
- if (!isIdentifierPart(last) && last !== CharacterCodes.minus) break;
2632
- this.pos = (this.pos + charSize(last)) | 0;
2633
2653
  }
2634
- if (last === CharacterCodes.backslash)
2635
- this.setValue(text.substring(this.tokenStart, this.pos) + this.scanIdentifierParts());
2636
- else this.setValueSlice(this.tokenStart, this.pos);
2637
- return (this.token = this.identifierKind());
2654
+ // JSDoc names take `-`, as JSX names do.
2655
+ this.pos = this.tokenStart;
2656
+ if (this.scanIdentifier(0, IdentifierVariant.JSX)) return (this.token = this.identifierKind());
2657
+ this.pos = (this.tokenStart + charSize(ch)) | 0;
2658
+ return (this.token = SyntaxKind.Unknown);
2638
2659
  }
2639
2660
  }
2640
2661
 
2662
+ /** Which characters an identifier scan takes after its start. */
2663
+ export const enum IdentifierVariant {
2664
+ Standard,
2665
+ /** JSX and JSDoc names, which take `-`. */
2666
+ JSX,
2667
+ /** Regular expression group names, which take a surrogate pair written as two `\u` escapes. */
2668
+ RegExpGroupName,
2669
+ }
2670
+
2641
2671
  const mergeConflictMarkerLength = 7;
2642
2672
 
2643
2673
  function utf8Length(ch: number): number {