tsc-ts 0.0.10 → 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 (367) hide show
  1. package/README.md +1 -1
  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 +20 -15
  6. package/dist/api/compiler/ast.js +1023 -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 +173 -123
  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 +469 -438
  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 -113
  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 +210 -74
  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 +137 -34
  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 +93 -31
  73. package/dist/api/compiler/checker.js +143 -35
  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 +19 -4
  77. package/dist/api/compiler/compile-program.js +45 -26
  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.js +7 -7
  81. package/dist/api/compiler/emitter.d.ts +7 -1
  82. package/dist/api/compiler/emitter.js +53 -11
  83. package/dist/api/compiler/file-include.d.ts +2 -1
  84. package/dist/api/compiler/file-include.js +11 -7
  85. package/dist/api/compiler/file-loader.d.ts +10 -0
  86. package/dist/api/compiler/file-loader.js +138 -41
  87. package/dist/api/compiler/instantiation.d.ts +7 -0
  88. package/dist/api/compiler/instantiation.js +101 -49
  89. package/dist/api/compiler/jsdoc.js +23 -23
  90. package/dist/api/compiler/link-tables.d.ts +48 -18
  91. package/dist/api/compiler/link-tables.js +80 -37
  92. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  93. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  94. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  95. package/dist/api/compiler/locales/de-DE.js +1 -1
  96. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  97. package/dist/api/compiler/locales/es-ES.js +1 -1
  98. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  99. package/dist/api/compiler/locales/fr-FR.js +1 -1
  100. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  101. package/dist/api/compiler/locales/it-IT.js +1 -1
  102. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  103. package/dist/api/compiler/locales/ja-JP.js +1 -1
  104. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  105. package/dist/api/compiler/locales/ko-KR.js +1 -1
  106. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  107. package/dist/api/compiler/locales/pl-PL.js +1 -1
  108. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  109. package/dist/api/compiler/locales/pt-BR.js +1 -1
  110. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  111. package/dist/api/compiler/locales/ru-RU.js +1 -1
  112. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  113. package/dist/api/compiler/locales/tr-TR.js +1 -1
  114. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  115. package/dist/api/compiler/locales/zh-CN.js +1 -1
  116. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  117. package/dist/api/compiler/locales/zh-TW.js +1 -1
  118. package/dist/api/compiler/module-resolution-types.js +6 -6
  119. package/dist/api/compiler/module-resolution.d.ts +10 -1
  120. package/dist/api/compiler/module-resolution.js +115 -84
  121. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  122. package/dist/api/compiler/module-specifiers.js +24 -18
  123. package/dist/api/compiler/name-resolver.js +74 -65
  124. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  125. package/dist/api/compiler/node-builder-names.js +210 -90
  126. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  127. package/dist/api/compiler/node-builder-reuse.js +23 -22
  128. package/dist/api/compiler/node-builder.d.ts +18 -1
  129. package/dist/api/compiler/node-builder.js +191 -102
  130. package/dist/api/compiler/option-declarations.d.ts +2 -6
  131. package/dist/api/compiler/option-declarations.js +315 -375
  132. package/dist/api/compiler/options.d.ts +15 -33
  133. package/dist/api/compiler/options.js +21 -54
  134. package/dist/api/compiler/output-paths.d.ts +4 -1
  135. package/dist/api/compiler/output-paths.js +6 -11
  136. package/dist/api/compiler/package-json.d.ts +3 -3
  137. package/dist/api/compiler/package-json.js +11 -10
  138. package/dist/api/compiler/parser.d.ts +40 -19
  139. package/dist/api/compiler/parser.js +308 -216
  140. package/dist/api/compiler/path.d.ts +9 -0
  141. package/dist/api/compiler/path.js +20 -3
  142. package/dist/api/compiler/printer/emit-context.d.ts +3 -1
  143. package/dist/api/compiler/printer/emit-context.js +16 -1
  144. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  145. package/dist/api/compiler/printer/factory-base.js +7 -3
  146. package/dist/api/compiler/printer/factory.js +3 -1
  147. package/dist/api/compiler/printer/helpers.js +10 -1
  148. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  149. package/dist/api/compiler/printer/name-generator.js +35 -16
  150. package/dist/api/compiler/printer/printer.d.ts +1 -0
  151. package/dist/api/compiler/printer/printer.js +303 -281
  152. package/dist/api/compiler/printer/utilities.js +149 -147
  153. package/dist/api/compiler/program-checker.d.ts +8 -2
  154. package/dist/api/compiler/program-checker.js +84 -34
  155. package/dist/api/compiler/program-utilities.d.ts +3 -1
  156. package/dist/api/compiler/program-utilities.js +28 -15
  157. package/dist/api/compiler/program.d.ts +2 -0
  158. package/dist/api/compiler/program.js +69 -57
  159. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  160. package/dist/api/compiler/pseudo-bigint.js +18 -0
  161. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  162. package/dist/api/compiler/regexp-checker.js +93 -76
  163. package/dist/api/compiler/relations.d.ts +27 -4
  164. package/dist/api/compiler/relations.js +337 -180
  165. package/dist/api/compiler/reparser.js +60 -56
  166. package/dist/api/compiler/scanner.d.ts +19 -2
  167. package/dist/api/compiler/scanner.js +123 -108
  168. package/dist/api/compiler/shared-results.d.ts +463 -0
  169. package/dist/api/compiler/shared-results.js +2128 -0
  170. package/dist/api/compiler/sourcemap.js +2 -2
  171. package/dist/api/compiler/symbol-accessibility.js +87 -74
  172. package/dist/api/compiler/symbol.d.ts +22 -13
  173. package/dist/api/compiler/symbol.js +15 -1
  174. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  175. package/dist/api/compiler/transformers/alias-references.js +247 -139
  176. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  177. package/dist/api/compiler/transformers/async.d.ts +0 -1
  178. package/dist/api/compiler/transformers/async.js +64 -77
  179. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  180. package/dist/api/compiler/transformers/class-fields.js +81 -78
  181. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  182. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  183. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  184. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  185. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  186. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  187. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  188. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  189. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  190. package/dist/api/compiler/transformers/declarations.js +305 -238
  191. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  192. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  193. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  194. package/dist/api/compiler/transformers/destructuring.js +19 -18
  195. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  196. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  197. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  198. package/dist/api/compiler/transformers/for-await.js +25 -25
  199. package/dist/api/compiler/transformers/import-elision.js +14 -14
  200. package/dist/api/compiler/transformers/jsx.js +12 -12
  201. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  202. package/dist/api/compiler/transformers/module.js +8 -8
  203. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  204. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  205. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  206. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  207. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  208. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  209. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  210. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  211. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  212. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  213. package/dist/api/compiler/transformers/using.js +12 -12
  214. package/dist/api/compiler/transformers/utilities.js +77 -77
  215. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  216. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  217. package/dist/api/compiler/tsconfig.d.ts +10 -2
  218. package/dist/api/compiler/tsconfig.js +136 -48
  219. package/dist/api/compiler/type-printer.js +40 -3
  220. package/dist/api/compiler/types.d.ts +2 -1
  221. package/dist/api/library/ast.generated.d.ts +42 -39
  222. package/dist/api/library/ast.generated.js +1 -1
  223. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  224. package/dist/api/library/compiler-options.generated.js +1 -1
  225. package/dist/api/library/disk.js +12 -1
  226. package/dist/api/library/enums.generated.d.ts +206 -206
  227. package/dist/api/library/enums.generated.js +206 -206
  228. package/dist/api/library/nodes.js +26 -26
  229. package/package.json +9 -9
  230. package/src/compiler/ast-utilities.ts +99 -7
  231. package/src/compiler/ast.ts +55 -26
  232. package/src/compiler/binder.ts +39 -4
  233. package/src/compiler/character-codes.ts +2 -2
  234. package/src/compiler/checker-calls.ts +76 -8
  235. package/src/compiler/checker-classes.ts +78 -24
  236. package/src/compiler/checker-contextual.ts +6 -1
  237. package/src/compiler/checker-declarations.ts +31 -4
  238. package/src/compiler/checker-declared-types.ts +8 -5
  239. package/src/compiler/checker-decorators.ts +1 -1
  240. package/src/compiler/checker-deprecation.ts +29 -8
  241. package/src/compiler/checker-destructuring.ts +10 -3
  242. package/src/compiler/checker-emit-helpers.ts +1 -0
  243. package/src/compiler/checker-emit-resolver.ts +16 -6
  244. package/src/compiler/checker-expressions.ts +79 -46
  245. package/src/compiler/checker-functions.ts +21 -6
  246. package/src/compiler/checker-generated-code.ts +2 -22
  247. package/src/compiler/checker-grammar.ts +133 -60
  248. package/src/compiler/checker-heritage.ts +22 -21
  249. package/src/compiler/checker-inference.ts +514 -87
  250. package/src/compiler/checker-iteration.ts +18 -31
  251. package/src/compiler/checker-javascript.ts +1 -1
  252. package/src/compiler/checker-jsdoc.ts +50 -27
  253. package/src/compiler/checker-jsx.ts +26 -4
  254. package/src/compiler/checker-members.ts +197 -55
  255. package/src/compiler/checker-modules.ts +332 -65
  256. package/src/compiler/checker-narrowing.ts +98 -19
  257. package/src/compiler/checker-object-literals.ts +3 -0
  258. package/src/compiler/checker-operators.ts +11 -4
  259. package/src/compiler/checker-property-access.ts +7 -2
  260. package/src/compiler/checker-services.ts +39 -12
  261. package/src/compiler/checker-signatures.ts +15 -1
  262. package/src/compiler/checker-source-file.ts +39 -13
  263. package/src/compiler/checker-statements.ts +3 -2
  264. package/src/compiler/checker-symbol-types.ts +29 -6
  265. package/src/compiler/checker-symbols.ts +158 -15
  266. package/src/compiler/checker-type-factory.ts +120 -21
  267. package/src/compiler/checker-type-nodes.ts +46 -3
  268. package/src/compiler/checker-type-operators.ts +83 -26
  269. package/src/compiler/checker-types.ts +147 -4
  270. package/src/compiler/checker-unused.ts +9 -14
  271. package/src/compiler/checker.ts +168 -41
  272. package/src/compiler/command-line.ts +28 -28
  273. package/src/compiler/compile-program.ts +51 -25
  274. package/src/compiler/decoder.ts +13 -4
  275. package/src/compiler/diagnostic-messages.ts +1973 -1892
  276. package/src/compiler/emitter.ts +57 -8
  277. package/src/compiler/encoder.ts +23 -8
  278. package/src/compiler/file-include.ts +9 -3
  279. package/src/compiler/file-loader.ts +139 -32
  280. package/src/compiler/help.ts +10 -14
  281. package/src/compiler/incremental.ts +86 -18
  282. package/src/compiler/init.ts +2 -7
  283. package/src/compiler/instantiation.ts +77 -22
  284. package/src/compiler/jsdoc.ts +3 -1
  285. package/src/compiler/link-tables.ts +82 -37
  286. package/src/compiler/locales/cs-CZ.ts +1 -1
  287. package/src/compiler/locales/de-DE.ts +1 -1
  288. package/src/compiler/locales/es-ES.ts +1 -1
  289. package/src/compiler/locales/fr-FR.ts +1 -1
  290. package/src/compiler/locales/it-IT.ts +1 -1
  291. package/src/compiler/locales/ja-JP.ts +1 -1
  292. package/src/compiler/locales/ko-KR.ts +1 -1
  293. package/src/compiler/locales/pl-PL.ts +1 -1
  294. package/src/compiler/locales/pt-BR.ts +1 -1
  295. package/src/compiler/locales/ru-RU.ts +1 -1
  296. package/src/compiler/locales/tr-TR.ts +1 -1
  297. package/src/compiler/locales/zh-CN.ts +1 -1
  298. package/src/compiler/locales/zh-TW.ts +1 -1
  299. package/src/compiler/module-resolution.ts +44 -8
  300. package/src/compiler/module-specifiers.ts +62 -20
  301. package/src/compiler/name-resolver.ts +9 -1
  302. package/src/compiler/node-builder-names.ts +236 -54
  303. package/src/compiler/node-builder-pseudo.ts +4 -7
  304. package/src/compiler/node-builder-reuse.ts +5 -4
  305. package/src/compiler/node-builder.ts +130 -31
  306. package/src/compiler/option-declarations.ts +33 -103
  307. package/src/compiler/options.ts +23 -62
  308. package/src/compiler/output-paths.ts +5 -18
  309. package/src/compiler/package-entrypoints.ts +345 -0
  310. package/src/compiler/package-json.ts +4 -4
  311. package/src/compiler/parallel-check.ts +197 -8
  312. package/src/compiler/parallel-emit.ts +1 -1
  313. package/src/compiler/parser.ts +156 -39
  314. package/src/compiler/path.ts +22 -2
  315. package/src/compiler/printer/emit-context.ts +16 -0
  316. package/src/compiler/printer/factory-base.ts +10 -3
  317. package/src/compiler/printer/factory.ts +4 -1
  318. package/src/compiler/printer/helpers.ts +10 -1
  319. package/src/compiler/printer/name-generator.ts +24 -2
  320. package/src/compiler/printer/printer.ts +35 -14
  321. package/src/compiler/printer/utilities.ts +8 -2
  322. package/src/compiler/program-checker.ts +53 -5
  323. package/src/compiler/program-utilities.ts +23 -10
  324. package/src/compiler/program.ts +13 -1
  325. package/src/compiler/pseudo-bigint.ts +17 -0
  326. package/src/compiler/regexp-checker.ts +63 -30
  327. package/src/compiler/relations.ts +233 -77
  328. package/src/compiler/reparser.ts +7 -2
  329. package/src/compiler/scanner.ts +109 -79
  330. package/src/compiler/shared-results.ts +2414 -0
  331. package/src/compiler/show-config.ts +18 -1
  332. package/src/compiler/sourcemap.ts +2 -2
  333. package/src/compiler/symbol-accessibility.ts +26 -3
  334. package/src/compiler/symbol.ts +31 -14
  335. package/src/compiler/syntax-kind.ts +188 -187
  336. package/src/compiler/thread-entry.ts +19 -2
  337. package/src/compiler/transformers/alias-references.ts +123 -4
  338. package/src/compiler/transformers/async.ts +2 -17
  339. package/src/compiler/transformers/class-fields.ts +13 -12
  340. package/src/compiler/transformers/commonjs-module.ts +11 -7
  341. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  342. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  343. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  344. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  345. package/src/compiler/transformers/declarations.ts +134 -48
  346. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  347. package/src/compiler/transformers/destructuring.ts +4 -3
  348. package/src/compiler/transformers/external-module-info.ts +1 -1
  349. package/src/compiler/transformers/jsx.ts +2 -1
  350. package/src/compiler/transformers/reference-resolver.ts +83 -19
  351. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  352. package/src/compiler/transformers/syntax-facts.ts +2 -7
  353. package/src/compiler/transformers/type-eraser.ts +10 -1
  354. package/src/compiler/transformers/type-serialization.ts +3 -2
  355. package/src/compiler/transformers/visitor-base.ts +2 -1
  356. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  357. package/src/compiler/tsc-build.ts +3 -0
  358. package/src/compiler/tsc-cli.ts +2 -0
  359. package/src/compiler/tsc-compile.ts +7 -2
  360. package/src/compiler/tsc-watch.ts +74 -45
  361. package/src/compiler/tsconfig.ts +176 -19
  362. package/src/compiler/type-printer.ts +36 -2
  363. package/src/compiler/types.ts +2 -1
  364. package/src/library/ast.generated.ts +57 -41
  365. package/src/library/compiler-options.generated.ts +117 -103
  366. package/src/library/disk.ts +10 -1
  367. package/src/library/enums.generated.ts +196 -196
@@ -56,6 +56,7 @@ import {
56
56
  import type { EmitResolver } from './emit-resolver.js';
57
57
  import { ConstantKind, type Evaluation } from './reference-resolver.js';
58
58
  import { type TypeScriptFacts } from './subtree-facts.js';
59
+ import { nodeIsDecorated } from './decorator-utilities.js';
59
60
  import { Transformer } from './transformer.js';
60
61
  import {
61
62
  getInnermostModuleDeclaration,
@@ -65,6 +66,7 @@ import {
65
66
  isInstantiatedModule,
66
67
  isParameterPropertyDeclaration,
67
68
  isSameNode,
69
+ modifierFlagsOf,
68
70
  } from './utilities.js';
69
71
 
70
72
  const typeScriptModifiers =
@@ -577,7 +579,10 @@ export class RuntimeSyntax extends Transformer {
577
579
  let name = visitedName instanceof Identifier ? (visitedName as Identifier) : undefined;
578
580
  if (
579
581
  name === undefined &&
580
- (exported || childIsDecorated(this.options.experimentalDecorators === true, node.members))
582
+ (exported ||
583
+ childIsDecorated(this.options.experimentalDecorators === true, node.members) ||
584
+ ((modifierFlagsOf(node) & exportDefault) !== exportDefault &&
585
+ nodeIsDecorated(this.options.experimentalDecorators === true, node, undefined, undefined)))
581
586
  )
582
587
  name = this.factory.createGeneratedNameForNode(node, 0, '', '');
583
588
  const updated: Node = this.factory.updateClassDeclaration(
@@ -4,7 +4,6 @@ import {
4
4
  BinaryExpression,
5
5
  BindingElement,
6
6
  BindingPattern,
7
- CallExpression,
8
7
  CatchClause,
9
8
  ForInOrOfStatement,
10
9
  FunctionDeclaration,
@@ -29,6 +28,7 @@ import {
29
28
  import { ClusteredIntLinkTable } from '../link-tables.js';
30
29
  import { isTypeNodeKind } from '../printer/utilities.js';
31
30
  import { SyntaxKind } from '../syntax-kind.js';
31
+ import { isImportCall } from '../ast-utilities.js';
32
32
  import { TokenFlags } from '../types.js';
33
33
  import { getElementsOfBindingOrAssignmentPattern, getTargetOfBindingOrAssignmentElement } from './destructuring.js';
34
34
 
@@ -267,12 +267,7 @@ export class SyntaxFacts extends NodeVisitor {
267
267
  : SubtreeFacts.None)
268
268
  );
269
269
  case SyntaxKind.CallExpression:
270
- return (
271
- this.children(node) |
272
- (node instanceof CallExpression && node.expression.kind === SyntaxKind.ImportKeyword
273
- ? SubtreeFacts.ContainsDynamicImport
274
- : SubtreeFacts.None)
275
- );
270
+ return this.children(node) | (isImportCall(node) ? SubtreeFacts.ContainsDynamicImport : SubtreeFacts.None);
276
271
  case SyntaxKind.MetaProperty:
277
272
  return node instanceof MetaProperty ? this.propagate(node.name) & ~SubtreeFacts.ContainsIdentifier : 0;
278
273
  case SyntaxKind.SpreadElement:
@@ -398,7 +398,16 @@ export class TypeEraser extends Transformer {
398
398
  case SyntaxKind.ImportClause:
399
399
  if (node instanceof ImportClause) {
400
400
  if (node.phaseModifier === SyntaxKind.TypeKeyword) return undefined;
401
- const bindings = this.visitNode(node.namedBindings);
401
+ let bindings = this.visitNode(node.namedBindings);
402
+ // With a default import, `{}` left by erasing type-only specifiers goes; a `{}` written in the source stays.
403
+ if (
404
+ node.name !== undefined &&
405
+ bindings instanceof NamedImports &&
406
+ bindings.elements.nodes.length === 0 &&
407
+ node.namedBindings instanceof NamedImports &&
408
+ node.namedBindings.elements.nodes.length !== 0
409
+ )
410
+ bindings = undefined;
402
411
  if (node.name === undefined && bindings === undefined) return undefined;
403
412
  return factory.updateImportClause(node, node.phaseModifier, node.name, bindings);
404
413
  }
@@ -22,6 +22,7 @@ import {
22
22
  UnionTypeNode,
23
23
  VariableDeclaration,
24
24
  getIsTypeOnly,
25
+ getText,
25
26
  } from '../ast.js';
26
27
  import { getStrictOptionValue } from '../options.js';
27
28
  import { SyntaxKind } from '../syntax-kind.js';
@@ -119,10 +120,10 @@ function resolveEntityName(
119
120
  const namespace = resolveEntityName(resolver, name.left, SymbolFlags.Namespace, false, location);
120
121
  if (namespace === undefined) return undefined;
121
122
  if (namespace === unknownSymbol) return namespace;
122
- let member = resolver.getExportOfSymbol(namespace, name.right.text);
123
+ let member = resolver.getExportOfSymbol(namespace, getText(name.right));
123
124
  if (member === undefined && (namespace.flags & SymbolFlags.Alias) !== 0) {
124
125
  const target = resolver.resolveAlias(namespace);
125
- if (target !== undefined) member = resolver.getExportOfSymbol(target, name.right.text);
126
+ if (target !== undefined) member = resolver.getExportOfSymbol(target, getText(name.right));
126
127
  }
127
128
  if (member === undefined || (member.flags & (meaning | SymbolFlags.Alias)) === 0) return undefined;
128
129
  symbol = member;
@@ -1186,6 +1186,7 @@ export abstract class VisitorBase extends VisitorHooks {
1186
1186
  this.visitModifiers(node.modifiers),
1187
1187
  node.keyword,
1188
1188
  required(this.visitNode(node.name), node.name),
1189
+ this.visitNode(node.attributes) as TypeLiteralNode | undefined,
1189
1190
  this.visitNode(node.body),
1190
1191
  );
1191
1192
  break;
@@ -1340,7 +1341,7 @@ export abstract class VisitorBase extends VisitorHooks {
1340
1341
  return this.factory.updateQualifiedName(
1341
1342
  node,
1342
1343
  required(this.visitNode(node.left), node.left),
1343
- asIdentifier(this.visitNode(node.right), node.right),
1344
+ required(this.visitNode(node.right), node.right),
1344
1345
  );
1345
1346
  break;
1346
1347
  case SyntaxKind.RestType:
@@ -144,11 +144,16 @@ export abstract class VisitorHooks {
144
144
  if (declarations.length === 0) return updated;
145
145
  const factory = this.factory;
146
146
  if (updated === undefined) return factory.createBlock(declarations, true);
147
- if (!(updated instanceof Block))
148
- return factory.createBlock(
149
- this.context.mergeEnvironment([factory.createReturnStatement(updated)], declarations),
150
- false,
147
+ if (!(updated instanceof Block)) {
148
+ // The return statement takes the expression's range, so its comments are emitted once, before `return`.
149
+ this.context.addEmitFlags(updated, EmitFlags.NoComments);
150
+ const block = this.context.convertToFunctionBlock(updated, false);
151
+ return factory.updateBlock(
152
+ block,
153
+ this.context.mergeEnvironmentList(block.statements, declarations),
154
+ block.multiLine,
151
155
  );
156
+ }
152
157
  return factory.updateBlock(
153
158
  updated,
154
159
  this.context.mergeEnvironmentList(updated.statements, declarations),
@@ -777,6 +777,9 @@ export class Orchestrator {
777
777
  times.parseTime = performance.now() - parseStart;
778
778
  const bindStart = performance.now();
779
779
  const checked = new CheckedProgram(program);
780
+ // The project's incremental program, made after checking, keeps the globals found checking a file
781
+ // with the file.
782
+ checked.globalsInFileDiagnostics = true;
780
783
  times.bindTime = performance.now() - bindStart;
781
784
  const options = program.options;
782
785
  const count = mayUseThreads ? checkerThreads(options.checkers, options.singleThreaded, program) : 1;
@@ -64,6 +64,8 @@ export abstract class System extends CommandLineHost {
64
64
 
65
65
  /** Returns `''` for unset variables. */
66
66
  abstract getEnvironmentVariable(name: string): string;
67
+ /** Whether the variable is set, perhaps to `''`. */
68
+ abstract hasEnvironmentVariable(name: string): boolean;
67
69
  abstract write(text: string): void;
68
70
  abstract fileExists(path: string): boolean;
69
71
  abstract directoryExists(path: string): boolean;
@@ -8,6 +8,7 @@ import {
8
8
  CheckedProgram,
9
9
  CompilerProgram,
10
10
  CompileTimes,
11
+ declarationDiagnosticsDue,
11
12
  getDiagnosticsOfProgram,
12
13
  OutputWriter,
13
14
  PlainProgram,
@@ -320,6 +321,8 @@ export function compileWithDeclarationThread(
320
321
  let declaring = true;
321
322
  const report = (): void => {
322
323
  if (diagnostics === undefined || declaring) return;
324
+ if (declarationDiagnosticsDue(compilerProgram, diagnostics, false))
325
+ for (const d of compilerProgram.getDeclarationDiagnostics()) diagnostics.push(d);
323
326
  const result = reportEmitAndErrors(
324
327
  sys,
325
328
  compilerProgram,
@@ -338,7 +341,7 @@ export function compileWithDeclarationThread(
338
341
  declaring = false;
339
342
  report();
340
343
  });
341
- // `PlainProgram.emit` reports the declaration errors once the thread has found them.
344
+ // `report` adds the declaration errors once the thread has found them, when they are due.
342
345
  diagnostics = getDiagnosticsOfProgram(compilerProgram, false, true);
343
346
  mark('diagnostics collected');
344
347
  report();
@@ -364,6 +367,8 @@ export function compileInParallel(
364
367
  formattedReports.format = work.reporter.plainFormat();
365
368
  mark(`${threads} checkers`);
366
369
  const checked = new CheckedProgram(program);
370
+ // The incremental program made after checking keeps the globals found checking a file with the file.
371
+ if (work.incremental) checked.globalsInFileDiagnostics = true;
367
372
  times.bindTime = performance.now() - bindStart;
368
373
  mark('checker created');
369
374
  if (work.incremental && !checksIncrementalOnThreads(sys, program.commandLine.buildInfoFileName())) {
@@ -565,7 +570,7 @@ export function reportEmitAndErrors(
565
570
  if (program.options.listFilesOnly !== true) {
566
571
  const emitStart = performance.now();
567
572
  emitResult = program.emit(writer);
568
- program.times.emitTime = performance.now() - emitStart;
573
+ program.times.emitTime += performance.now() - emitStart;
569
574
  }
570
575
  for (const diagnostic of emitResult.diagnostics) diagnostics.push(diagnostic);
571
576
  const all = sortAndDeduplicateDiagnostics(diagnostics);
@@ -474,14 +474,6 @@ class Watcher {
474
474
 
475
475
  start(): void {
476
476
  const sys = this.sys;
477
- if (this.config.options.incremental === true || this.config.options.composite === true) {
478
- this.snapshot = readBuildInfoProgram(
479
- this.config,
480
- new FileBuildInfoReader(new SystemFileSystem(sys)),
481
- sys.defaultLibraryPath,
482
- sys.currentDirectory,
483
- );
484
- }
485
477
  this.status.report(
486
478
  watchRestart.resumed
487
479
  ? Diagnostics.File_change_detected_Starting_incremental_compilation
@@ -491,59 +483,86 @@ class Watcher {
491
483
  watchRestart.firstBuildDone();
492
484
  this.changes.watch([this.stamps, this.configStamps]);
493
485
  };
494
- // A program shared with checker threads is never written: symbols get their ids when created.
495
486
  const options = this.config.options;
496
- if (parallelParse.spawn !== undefined && checkerThreads(options.checkers, options.singleThreaded) > 1)
487
+ if (parallelParse.spawn !== undefined && options.singleThreaded !== true) {
488
+ // Parse threads load the first program, as they load a compile's (`parsesAhead`, tsc-cli.ts), and
489
+ // it is shared with them: its symbols get their ids when they are created.
497
490
  assignSymbolIdsAtCreation();
498
- const threads = this.firstBuildThreads();
499
- if (threads > 1) this.buildOnThreads(threads, watchChanges);
500
- else this.build(watchChanges);
501
- }
502
-
503
- /**
504
- * The checker threads of the first build: those of a compile (`compileThreads`), or 1 to build on this
505
- * thread. A first build without old state checks every file, as a compile does; rebuilds check what a
506
- * change affects (`rebuildThreads`). With build info (`--incremental`), the first build stays here.
507
- */
508
- private firstBuildThreads(): number {
509
- const options = this.config.options;
510
- if (this.snapshot !== undefined || isIncremental(options) || parallelParse.spawn === undefined) return 1;
511
- return checkerThreads(options.checkers, options.singleThreaded);
491
+ this.buildOnThreads(watchChanges);
492
+ return;
493
+ }
494
+ if (isIncremental(options))
495
+ this.snapshot = readBuildInfoProgram(
496
+ this.config,
497
+ new FileBuildInfoReader(new SystemFileSystem(sys)),
498
+ sys.defaultLibraryPath,
499
+ sys.currentDirectory,
500
+ );
501
+ this.build(watchChanges);
512
502
  }
513
503
 
514
504
  /**
515
- * Builds the first program as a compile does: parse threads load its files, and checker threads check
516
- * it (parallel-check.ts) unless it checks little. The program is shared with them, so it gets its own
517
- * copy of the config and a host of its own. Its files go to the watch's file maps for rebuilds to take,
518
- * and are never written again: rebuilds check them with the checker's side tables. Calls `done` once
519
- * the build is reported.
505
+ * Builds the first program as a compile does: parse threads load its files while this thread reads the
506
+ * build info (`--incremental`), and checker threads check it (parallel-check.ts) unless it checks little.
507
+ * Without old state, every file is checked, as a compile does; with build info, the files the changes
508
+ * since affect are, as a rebuild checks them (`recheckOnThreads`). The program is shared with the
509
+ * threads, so it gets its own copy of the config and a host of its own. Its files go to the watch's
510
+ * file maps for rebuilds to take, and are never written again: rebuilds check them with the checker's
511
+ * side tables. Calls `done` once the build is reported.
520
512
  */
521
- private buildOnThreads(threads: number, done: () => void): void {
513
+ private buildOnThreads(done: () => void): void {
522
514
  releaseProgramCaches();
523
515
  const sys = this.sys;
524
516
  const config = copyCommandLine(this.config);
525
517
  const options = config.options;
518
+ const incremental = isIncremental(options);
526
519
  const session = new ParseSession(
527
- parseThreads(threads),
520
+ parseThreads(checkerThreads(options.checkers, options.singleThreaded)),
528
521
  options,
529
522
  sys.currentDirectory,
530
523
  config.configName,
531
524
  config.fileNames.length > 0,
532
525
  );
533
- const host = new WatchCompilerHost(
534
- sys,
535
- new CachedFileSystem(new SystemFileSystem(sys)),
536
- this.locale,
537
- new WatchSourceFiles(),
538
- );
526
+ const fs = new CachedFileSystem(new SystemFileSystem(sys));
527
+ const host = new WatchCompilerHost(sys, fs, this.locale, new WatchSourceFiles());
539
528
  const loader = new FileLoader(host, config);
540
529
  let rootFilesAdded = false;
530
+ // The build info lists the real paths of the `package.json` files module resolution looked up, as
531
+ // a compile's does (tsc-cli.ts): those of the threads' lookups are resolved into the file system's cache.
532
+ const resolvesPackageJsons = incremental && config.configName !== '' && config.buildInfoFileName() !== '';
541
533
  session.onIdle = (batch) => {
542
534
  if (!rootFilesAdded) rootFilesAdded = loader.addRootFiles(rootFilesPerChunk);
543
535
  loader.walkAhead(batch.files);
536
+ if (resolvesPackageJsons) {
537
+ const lookups = batch.packageJsons;
538
+ for (let k = 0; k < lookups.directories.length; k++)
539
+ if (lookups.exists[k]! || lookups.directoryExists[k]!)
540
+ fs.realpath(combinePaths(lookups.directories[k]!, 'package.json'));
541
+ }
542
+ };
543
+ // The build info is read while the threads parse, as a compile reads it, or here if they are done first.
544
+ let buildInfoRead = !incremental;
545
+ const readBuildInfo = (): void => {
546
+ if (buildInfoRead) return;
547
+ buildInfoRead = true;
548
+ this.snapshot = readBuildInfoProgram(
549
+ config,
550
+ new FileBuildInfoReader(new SystemFileSystem(sys)),
551
+ sys.defaultLibraryPath,
552
+ sys.currentDirectory,
553
+ );
554
+ mark('build info read');
544
555
  };
545
556
  session.start(config.fileNames, () => {
546
- const program = new Program(config, host, loader);
557
+ readBuildInfo();
558
+ let program = new Program(config, host, loader);
559
+ // Where the threads' lookups may miss some `package.json` files of the build info, the program is
560
+ // loaded again, resolving every file's imports and references itself, as a compile does.
561
+ if (incremental && !program.hasAllPackageJsonLookups()) {
562
+ const own = new FileLoader(host, config);
563
+ own.takesPreparedResolutions = false;
564
+ program = new Program(config, host, own);
565
+ }
547
566
  // The session's callbacks keep the loader: its tasks go once checking has started.
548
567
  releaseLater(loader);
549
568
  this.files = this.files.next();
@@ -552,16 +571,25 @@ class Watcher {
552
571
  this.files.current.set(watchFileKey(file.fileName, file.path, indicator), file);
553
572
  }
554
573
  const checked = new CheckedProgram(program);
574
+ // The incremental program `finishBuild` makes after checking keeps the globals found checking a file
575
+ // with the file.
576
+ checked.globalsInFileDiagnostics = true;
555
577
  const finish = (): void => {
556
- this.finishBuild(checked);
557
578
  // Rebuilds parse what changed themselves.
558
579
  clearPreparedFiles();
559
580
  done();
560
581
  };
561
- const count = checkerThreads(options.checkers, options.singleThreaded, program);
562
- if (count > 1) startParallelCheck(checked, count, finish);
563
- else finish();
582
+ const threads = checkerThreads(options.checkers, options.singleThreaded, program);
583
+ if (this.snapshot !== undefined && threads > 1) return this.recheckOnThreads(checked, threads, new Map(), finish);
584
+ const report = (): void => {
585
+ this.finishBuild(checked);
586
+ finish();
587
+ };
588
+ if (this.snapshot === undefined && threads > 1) startParallelCheck(checked, threads, report);
589
+ else report();
564
590
  });
591
+ if (incremental && sys.fileExists(config.buildInfoFileName())) session.queueAhead();
592
+ readBuildInfo();
565
593
  }
566
594
 
567
595
  private configFiles(): string[] {
@@ -650,6 +678,7 @@ class Watcher {
650
678
  computeLastSignatures(this.snapshot, this.lastChecked, this.files.parsed);
651
679
  this.lastChecked = undefined;
652
680
  const checked = new CheckedProgram(program);
681
+ checked.globalsInFileDiagnostics = true;
653
682
  const signatures = new Map<string, string>();
654
683
  const threads = this.rebuildThreads(checked, signatures);
655
684
  // A new checker for checker threads: `rebuildThreads` may have emitted declarations with this one.
@@ -690,9 +719,9 @@ class Watcher {
690
719
  * affects the global scope. A changed file whose declaration file keeps the signature of the last
691
720
  * build affects only itself (`getFilesAffectedBy`); its signature is computed with `checked`'s checker
692
721
  * and added to `signatures`. That is what the change affects at most; `recheckOnThreads` then takes
693
- * what it does affect. A watch whose first config kept it on one thread gave its symbols no ids at
694
- * creation (`start`), so its rebuilds, which take the unchanged files of earlier builds, stay on this
695
- * thread after a config edit turns checker threads on.
722
+ * what it does affect. A watch that started without parse threads (`--singleThreaded`) gave its symbols
723
+ * no ids at creation (`start`), so its rebuilds, which take the unchanged files of earlier builds, stay on
724
+ * this thread after a config edit turns checker threads on.
696
725
  */
697
726
  private rebuildThreads(checked: CheckedProgram, signatures: Map<string, string>): number {
698
727
  const program = checked.program;