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
@@ -127,7 +127,7 @@ export class Reparser {
127
127
  type = this.reparseJSDocTypeLiteral(typeExpression);
128
128
  else
129
129
  throw new Error('typedef tag type expression should be a name reference or a type expression');
130
- const typeAlias = new TypeAliasDeclaration(345 /* SyntaxKind.JSTypeAliasDeclaration */, modifiers, name, typeParameters, type);
130
+ const typeAlias = new TypeAliasDeclaration(346 /* SyntaxKind.JSTypeAliasDeclaration */, modifiers, name, typeParameters, type);
131
131
  this.finishReparsedNode(typeAlias, tag);
132
132
  this.attachReparsedJSDoc(typeAlias, jsDoc);
133
133
  p.reparseList.push(this.wrapInJSDocNamespace(fullName, typeAlias, false));
@@ -139,7 +139,7 @@ export class Reparser {
139
139
  const functionType = this.reparseJSDocSignature(tag.typeExpression, tag, jsDoc, tag, undefined);
140
140
  const name = this.cloneTypeAliasName(this.getInnermostNameOfJSDocNamespace(fullName));
141
141
  const typeParameters = this.gatherTypeParameters(jsDoc, true);
142
- const typeAlias = new TypeAliasDeclaration(345 /* SyntaxKind.JSTypeAliasDeclaration */, modifiers, name, typeParameters, functionType);
142
+ const typeAlias = new TypeAliasDeclaration(346 /* SyntaxKind.JSTypeAliasDeclaration */, modifiers, name, typeParameters, functionType);
143
143
  this.finishReparsedNode(typeAlias, tag);
144
144
  this.attachReparsedJSDoc(typeAlias, jsDoc);
145
145
  p.reparseList.push(this.wrapInJSDocNamespace(fullName, typeAlias, false));
@@ -162,16 +162,16 @@ export class Reparser {
162
162
  p.reparsedClones.push(copy);
163
163
  attributes = copy;
164
164
  }
165
- const importDeclaration = new ImportDeclaration(346 /* SyntaxKind.JSImportDeclaration */, undefined, importClause, moduleSpecifier, attributes);
165
+ const importDeclaration = new ImportDeclaration(347 /* SyntaxKind.JSImportDeclaration */, undefined, importClause, moduleSpecifier, attributes);
166
166
  this.finishReparsedNode(importDeclaration, tag);
167
167
  p.reparseList.push(importDeclaration);
168
168
  return true;
169
169
  }
170
170
  if (tag instanceof JSDocOverloadTag) {
171
171
  // Overload signatures only for functions, methods and constructors outside object literals.
172
- if ((parent.kind === 263 /* SyntaxKind.FunctionDeclaration */ ||
173
- parent.kind === 175 /* SyntaxKind.MethodDeclaration */ ||
174
- parent.kind === 177 /* SyntaxKind.Constructor */) &&
172
+ if ((parent.kind === 264 /* SyntaxKind.FunctionDeclaration */ ||
173
+ parent.kind === 176 /* SyntaxKind.MethodDeclaration */ ||
174
+ parent.kind === 178 /* SyntaxKind.Constructor */) &&
175
175
  !p.inObjectLiteralMembers())
176
176
  p.reparseList.push(this.reparseJSDocSignature(tag.typeExpression, parent, jsDoc, tag, getModifiers(parent)));
177
177
  return true;
@@ -207,10 +207,10 @@ export class Reparser {
207
207
  else if (fun instanceof MethodDeclaration) {
208
208
  methodName = this.deepCloneReparse(this.checkNonIdentifierName(fun.name));
209
209
  }
210
- else if (fun.kind !== 177 /* SyntaxKind.Constructor */ && fun.kind !== 331 /* SyntaxKind.JSDocCallbackTag */) {
210
+ else if (fun.kind !== 178 /* SyntaxKind.Constructor */ && fun.kind !== 332 /* SyntaxKind.JSDocCallbackTag */) {
211
211
  throw new Error('Unexpected kind ' + fun.kind);
212
212
  }
213
- const typeParameters = tag.kind !== 331 /* SyntaxKind.JSDocCallbackTag */ ? this.gatherTypeParameters(jsDoc, false) : undefined;
213
+ const typeParameters = tag.kind !== 332 /* SyntaxKind.JSDocCallbackTag */ ? this.gatherTypeParameters(jsDoc, false) : undefined;
214
214
  const parameters = [];
215
215
  const signatureParameters = jsSignature instanceof JSDocSignature ? jsSignature.parameters : undefined;
216
216
  if (signatureParameters !== undefined) {
@@ -348,7 +348,7 @@ export class Reparser {
348
348
  return undefined;
349
349
  for (const tag of tags.nodes) {
350
350
  // With a @typedef or @callback, @template declares the defined type's type parameters.
351
- if (!typedefOrCallback && (tag.kind === 338 /* SyntaxKind.JSDocTypedefTag */ || tag.kind === 331 /* SyntaxKind.JSDocCallbackTag */))
351
+ if (!typedefOrCallback && (tag.kind === 339 /* SyntaxKind.JSDocTypedefTag */ || tag.kind === 332 /* SyntaxKind.JSDocCallbackTag */))
352
352
  return undefined;
353
353
  if (!(tag instanceof JSDocTemplateTag))
354
354
  continue;
@@ -382,13 +382,13 @@ export class Reparser {
382
382
  }
383
383
  reparseHosted(tag, parent, jsDoc) {
384
384
  switch (tag.kind) {
385
- case 336 /* SyntaxKind.JSDocTypeTag */:
385
+ case 337 /* SyntaxKind.JSDocTypeTag */:
386
386
  return this.reparseTypeTag(tag, parent);
387
- case 342 /* SyntaxKind.JSDocSatisfiesTag */:
387
+ case 343 /* SyntaxKind.JSDocSatisfiesTag */:
388
388
  if (tag instanceof JSDocSatisfiesTag)
389
389
  this.reparseSatisfiesTag(tag, parent);
390
390
  return true;
391
- case 337 /* SyntaxKind.JSDocTemplateTag */: {
391
+ case 338 /* SyntaxKind.JSDocTemplateTag */: {
392
392
  const fun = getFunctionLikeHost(parent);
393
393
  if (fun !== undefined) {
394
394
  if (getTypeParameters(fun) === undefined && getFullSignature(fun) === undefined) {
@@ -396,7 +396,7 @@ export class Reparser {
396
396
  this.finishMutatedNode(fun);
397
397
  }
398
398
  }
399
- else if (parent.kind === 264 /* SyntaxKind.ClassDeclaration */ || parent.kind === 232 /* SyntaxKind.ClassExpression */) {
399
+ else if (parent.kind === 265 /* SyntaxKind.ClassDeclaration */ || parent.kind === 233 /* SyntaxKind.ClassExpression */) {
400
400
  if (getClassTypeParameters(parent) === undefined) {
401
401
  setClassTypeParameters(parent, this.gatherTypeParameters(jsDoc, false));
402
402
  this.finishMutatedNode(parent);
@@ -404,7 +404,7 @@ export class Reparser {
404
404
  }
405
405
  return true;
406
406
  }
407
- case 333 /* SyntaxKind.JSDocParameterTag */: {
407
+ case 334 /* SyntaxKind.JSDocParameterTag */: {
408
408
  const fun = getFunctionLikeHost(parent);
409
409
  if (fun !== undefined && getFullSignature(fun) === undefined && tag instanceof JSDocParameterOrPropertyTag) {
410
410
  const param = findMatchingParameter(fun, tag, jsDoc);
@@ -422,7 +422,7 @@ export class Reparser {
422
422
  }
423
423
  return true;
424
424
  }
425
- case 335 /* SyntaxKind.JSDocThisTag */: {
425
+ case 336 /* SyntaxKind.JSDocThisTag */: {
426
426
  const fun = getFunctionLikeHost(parent);
427
427
  if (fun !== undefined && tag instanceof JSDocThisTag) {
428
428
  const parameters = getParameters(fun);
@@ -445,7 +445,7 @@ export class Reparser {
445
445
  }
446
446
  return true;
447
447
  }
448
- case 334 /* SyntaxKind.JSDocReturnTag */: {
448
+ case 335 /* SyntaxKind.JSDocReturnTag */: {
449
449
  const fun = getFunctionLikeHost(parent);
450
450
  if (fun !== undefined && getFullSignature(fun) === undefined) {
451
451
  const typeExpression = getTypeExpression(tag);
@@ -456,17 +456,17 @@ export class Reparser {
456
456
  }
457
457
  return true;
458
458
  }
459
- case 329 /* SyntaxKind.JSDocReadonlyTag */:
460
- case 327 /* SyntaxKind.JSDocPrivateTag */:
461
- case 326 /* SyntaxKind.JSDocPublicTag */:
462
- case 328 /* SyntaxKind.JSDocProtectedTag */:
463
- case 330 /* SyntaxKind.JSDocOverrideTag */:
459
+ case 330 /* SyntaxKind.JSDocReadonlyTag */:
460
+ case 328 /* SyntaxKind.JSDocPrivateTag */:
461
+ case 327 /* SyntaxKind.JSDocPublicTag */:
462
+ case 329 /* SyntaxKind.JSDocProtectedTag */:
463
+ case 331 /* SyntaxKind.JSDocOverrideTag */:
464
464
  return this.reparseModifierTag(tag, parent);
465
- case 324 /* SyntaxKind.JSDocImplementsTag */:
465
+ case 325 /* SyntaxKind.JSDocImplementsTag */:
466
466
  if (tag instanceof JSDocImplementsTag)
467
467
  this.reparseImplementsTag(tag, parent);
468
468
  return true;
469
- case 323 /* SyntaxKind.JSDocAugmentsTag */:
469
+ case 324 /* SyntaxKind.JSDocAugmentsTag */:
470
470
  if (tag instanceof JSDocAugmentsTag)
471
471
  this.reparseAugmentsTag(tag, parent);
472
472
  return true;
@@ -476,7 +476,7 @@ export class Reparser {
476
476
  reparseTypeTag(tag, parent) {
477
477
  const typeExpression = getTypeExpression(tag);
478
478
  switch (parent.kind) {
479
- case 244 /* SyntaxKind.VariableStatement */:
479
+ case 245 /* SyntaxKind.VariableStatement */:
480
480
  if (parent instanceof VariableStatement)
481
481
  for (const declaration of parent.declarationList.declarations.nodes)
482
482
  if (declaration instanceof VariableDeclaration &&
@@ -487,26 +487,26 @@ export class Reparser {
487
487
  return true;
488
488
  }
489
489
  break;
490
- case 261 /* SyntaxKind.VariableDeclaration */:
491
- case 278 /* SyntaxKind.ExportAssignment */:
492
- case 173 /* SyntaxKind.PropertyDeclaration */:
493
- case 303 /* SyntaxKind.PropertyAssignment */:
494
- case 304 /* SyntaxKind.ShorthandPropertyAssignment */:
495
- case 178 /* SyntaxKind.GetAccessor */:
490
+ case 262 /* SyntaxKind.VariableDeclaration */:
491
+ case 279 /* SyntaxKind.ExportAssignment */:
492
+ case 174 /* SyntaxKind.PropertyDeclaration */:
493
+ case 304 /* SyntaxKind.PropertyAssignment */:
494
+ case 305 /* SyntaxKind.ShorthandPropertyAssignment */:
495
+ case 179 /* SyntaxKind.GetAccessor */:
496
496
  if (getType(parent) === undefined && typeExpression !== undefined) {
497
497
  setType(parent, this.addDeepCloneReparse(getType(typeExpression)));
498
498
  this.finishMutatedNode(parent);
499
499
  return true;
500
500
  }
501
501
  break;
502
- case 170 /* SyntaxKind.Parameter */:
502
+ case 171 /* SyntaxKind.Parameter */:
503
503
  if (getType(parent) === undefined && typeExpression !== undefined) {
504
504
  setType(parent, this.reparseJSDocTypeLiteral(getType(typeExpression)));
505
505
  this.finishMutatedNode(parent);
506
506
  return true;
507
507
  }
508
508
  break;
509
- case 245 /* SyntaxKind.ExpressionStatement */:
509
+ case 246 /* SyntaxKind.ExpressionStatement */:
510
510
  if (parent instanceof ExpressionStatement) {
511
511
  const bin = parent.expression;
512
512
  if (bin instanceof BinaryExpression && isAssignmentDeclaration(bin) && typeExpression !== undefined) {
@@ -516,8 +516,8 @@ export class Reparser {
516
516
  }
517
517
  }
518
518
  break;
519
- case 254 /* SyntaxKind.ReturnStatement */:
520
- case 218 /* SyntaxKind.ParenthesizedExpression */: {
519
+ case 255 /* SyntaxKind.ReturnStatement */:
520
+ case 219 /* SyntaxKind.ParenthesizedExpression */: {
521
521
  const expression = getExpressionOfReturnOrParenthesized(parent);
522
522
  if (expression !== undefined && typeExpression !== undefined) {
523
523
  setExpression(parent, this.makeNewCast(this.addDeepCloneReparse(getType(typeExpression)), expression, true));
@@ -560,9 +560,9 @@ export class Reparser {
560
560
  break;
561
561
  }
562
562
  }
563
- else if (parent.kind === 261 /* SyntaxKind.VariableDeclaration */ ||
564
- parent.kind === 173 /* SyntaxKind.PropertyDeclaration */ ||
565
- parent.kind === 303 /* SyntaxKind.PropertyAssignment */) {
563
+ else if (parent.kind === 262 /* SyntaxKind.VariableDeclaration */ ||
564
+ parent.kind === 174 /* SyntaxKind.PropertyDeclaration */ ||
565
+ parent.kind === 304 /* SyntaxKind.PropertyAssignment */) {
566
566
  const initializer = getInitializer(parent);
567
567
  if (initializer !== undefined) {
568
568
  setInitializer(parent, this.makeNewCast(this.addDeepCloneReparse(getType(typeExpression)), initializer, false));
@@ -576,9 +576,9 @@ export class Reparser {
576
576
  this.finishMutatedNode(parent);
577
577
  }
578
578
  }
579
- else if (parent.kind === 254 /* SyntaxKind.ReturnStatement */ ||
580
- parent.kind === 218 /* SyntaxKind.ParenthesizedExpression */ ||
581
- parent.kind === 278 /* SyntaxKind.ExportAssignment */) {
579
+ else if (parent.kind === 255 /* SyntaxKind.ReturnStatement */ ||
580
+ parent.kind === 219 /* SyntaxKind.ParenthesizedExpression */ ||
581
+ parent.kind === 279 /* SyntaxKind.ExportAssignment */) {
582
582
  const expression = getExpressionOfReturnOrParenthesized(parent);
583
583
  if (expression !== undefined) {
584
584
  setExpression(parent, this.makeNewCast(this.addDeepCloneReparse(getType(typeExpression)), expression, false));
@@ -598,32 +598,32 @@ export class Reparser {
598
598
  if (parent instanceof ExpressionStatement)
599
599
  parent = parent.expression;
600
600
  switch (parent.kind) {
601
- case 175 /* SyntaxKind.MethodDeclaration */:
602
- case 178 /* SyntaxKind.GetAccessor */:
603
- case 179 /* SyntaxKind.SetAccessor */:
601
+ case 176 /* SyntaxKind.MethodDeclaration */:
602
+ case 179 /* SyntaxKind.GetAccessor */:
603
+ case 180 /* SyntaxKind.SetAccessor */:
604
604
  // In object literals these aren't class members: reparsed modifiers would cause spurious grammar errors.
605
605
  if (this.p.inObjectLiteralMembers())
606
606
  return false;
607
607
  break;
608
- case 173 /* SyntaxKind.PropertyDeclaration */:
609
- case 177 /* SyntaxKind.Constructor */:
610
- case 227 /* SyntaxKind.BinaryExpression */:
608
+ case 174 /* SyntaxKind.PropertyDeclaration */:
609
+ case 178 /* SyntaxKind.Constructor */:
610
+ case 228 /* SyntaxKind.BinaryExpression */:
611
611
  break;
612
612
  default:
613
613
  return false;
614
614
  }
615
615
  let keyword = 0 /* SyntaxKind.Unknown */;
616
616
  switch (tag.kind) {
617
- case 329 /* SyntaxKind.JSDocReadonlyTag */:
617
+ case 330 /* SyntaxKind.JSDocReadonlyTag */:
618
618
  keyword = 148 /* SyntaxKind.ReadonlyKeyword */;
619
619
  break;
620
- case 327 /* SyntaxKind.JSDocPrivateTag */:
620
+ case 328 /* SyntaxKind.JSDocPrivateTag */:
621
621
  keyword = 122 /* SyntaxKind.PrivateKeyword */;
622
622
  break;
623
- case 326 /* SyntaxKind.JSDocPublicTag */:
623
+ case 327 /* SyntaxKind.JSDocPublicTag */:
624
624
  keyword = 124 /* SyntaxKind.PublicKeyword */;
625
625
  break;
626
- case 328 /* SyntaxKind.JSDocProtectedTag */:
626
+ case 329 /* SyntaxKind.JSDocProtectedTag */:
627
627
  keyword = 123 /* SyntaxKind.ProtectedKeyword */;
628
628
  break;
629
629
  default:
@@ -648,7 +648,7 @@ export class Reparser {
648
648
  return true;
649
649
  }
650
650
  reparseImplementsTag(tag, parent) {
651
- if (parent.kind !== 264 /* SyntaxKind.ClassDeclaration */ && parent.kind !== 232 /* SyntaxKind.ClassExpression */)
651
+ if (parent.kind !== 265 /* SyntaxKind.ClassDeclaration */ && parent.kind !== 233 /* SyntaxKind.ClassExpression */)
652
652
  return false;
653
653
  const className = tag.className;
654
654
  const heritageClauses = getHeritageClauses(parent);
@@ -688,10 +688,14 @@ export class Reparser {
688
688
  return false;
689
689
  const target = clause.types.nodes[0];
690
690
  const source = tag.className;
691
+ // The tag's type arguments apply to an `extends` clause without any: one naming the same
692
+ // entity, or another expression such as a call (`extends mixin(Base)`), but not `null`.
691
693
  if (target instanceof ExpressionWithTypeArguments &&
692
- hasSamePropertyAccessName(target.expression, source.expression) &&
693
694
  target.typeArguments === undefined &&
694
- source.typeArguments !== undefined) {
695
+ source.typeArguments !== undefined &&
696
+ target.expression.kind !== 105 /* SyntaxKind.NullKeyword */ &&
697
+ (!isEntityNameExpression(target.expression, false) ||
698
+ hasSamePropertyAccessName(target.expression, source.expression))) {
695
699
  const newArguments = [];
696
700
  for (const arg of source.typeArguments.nodes)
697
701
  newArguments.push(this.addDeepCloneReparse(arg));
@@ -748,7 +752,7 @@ export class Reparser {
748
752
  const block = new ModuleBlock(this.p.newNodeList(fullName.pos, fullName.end, [wrapped]));
749
753
  this.finishReparsedNode(block, fullName);
750
754
  const modifiers = nested ? this.createExportModifier(fullName) : undefined;
751
- const result = new ModuleDeclaration(modifiers, 145 /* SyntaxKind.NamespaceKeyword */, this.addDeepCloneReparse(fullName.name), block);
755
+ const result = new ModuleDeclaration(modifiers, 145 /* SyntaxKind.NamespaceKeyword */, this.addDeepCloneReparse(fullName.name), undefined, block);
752
756
  this.finishReparsedNode(result, fullName);
753
757
  this.p.reparsedClones.push(result);
754
758
  return result;
@@ -760,7 +764,7 @@ function findMatchingParameter(fun, parameterTag, jsDoc) {
760
764
  let paramCount = -1;
761
765
  if (jsDoc.tags !== undefined)
762
766
  for (const tag of jsDoc.tags.nodes)
763
- if (tag.kind === 333 /* SyntaxKind.JSDocParameterTag */) {
767
+ if (tag.kind === 334 /* SyntaxKind.JSDocParameterTag */) {
764
768
  paramCount++;
765
769
  if (tag === parameterTag) {
766
770
  tagIndex = paramCount;
@@ -816,7 +820,7 @@ function getFunctionLikeHost(host) {
816
820
  fun = first instanceof VariableDeclaration ? first.initializer : undefined;
817
821
  }
818
822
  }
819
- else if (host.kind === 303 /* SyntaxKind.PropertyAssignment */ || host.kind === 173 /* SyntaxKind.PropertyDeclaration */) {
823
+ else if (host.kind === 304 /* SyntaxKind.PropertyAssignment */ || host.kind === 174 /* SyntaxKind.PropertyDeclaration */) {
820
824
  fun = getInitializer(host);
821
825
  }
822
826
  else if (host instanceof ExportAssignment) {
@@ -172,10 +172,19 @@ export declare class Scanner {
172
172
  /** Scans a merge conflict marker; returns true if it is skipped as trivia. */
173
173
  private scanConflictMarker;
174
174
  private processCommentDirective;
175
- /** @internal Scans an identifier after `prefixLength` units; sets the token value. */
176
- scanIdentifier(prefixLength: number): boolean;
175
+ /**
176
+ * @internal Scans an identifier after `prefixLength` units; sets the token value. `variant`
177
+ * decides the identifier parts: JSX and JSDoc names also take `-`, and regular expression group
178
+ * names take a surrogate pair written as two `\u` escapes.
179
+ */
180
+ scanIdentifier(prefixLength: number, variant: IdentifierVariant): boolean;
177
181
  /** Scans identifier parts including `\u` escapes and returns their cooked text. */
178
182
  private scanIdentifierParts;
183
+ /**
184
+ * At `\`: scans a `\u` escape of an identifier start (`isStart`) or part and returns its code point,
185
+ * or returns -1 and leaves the scanner unchanged.
186
+ */
187
+ private scanIdentifierEscape;
179
188
  private scanInvalidCharacter;
180
189
  /** Scans a quoted string and sets its cooked value. */
181
190
  private scanString;
@@ -238,6 +247,14 @@ export declare class Scanner {
238
247
  canFollowJSDocAt(): boolean;
239
248
  scanJSDocToken(): SyntaxKind;
240
249
  }
250
+ /** Which characters an identifier scan takes after its start. */
251
+ export declare const enum IdentifierVariant {
252
+ Standard = 0,
253
+ /** JSX and JSDoc names, which take `-`. */
254
+ JSX = 1,
255
+ /** Regular expression group names, which take a surrogate pair written as two `\u` escapes. */
256
+ RegExpGroupName = 2
257
+ }
241
258
  /** Whether `text` has a `<<<<<<<`, `|||||||`, `=======` or `>>>>>>>` marker at `pos`. */
242
259
  export declare function isConflictMarkerTrivia(text: string, pos: number): boolean;
243
260
  /** The `#!` line at the start of `text`, or `''`. */