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
@@ -17,6 +17,7 @@ import {
17
17
  TypeFlags,
18
18
  ObjectFlags,
19
19
  type TypeReference,
20
+ getMappedType,
20
21
  } from './checker-types.js';
21
22
  import {
22
23
  createTypeFromGenericGlobalType,
@@ -127,30 +128,18 @@ function anyIterationTypes(c: Checker): IterationTypes {
127
128
  return new IterationTypes(c.anyType, c.anyType, c.anyType);
128
129
  }
129
130
 
130
- /** A not-iterable error, reported once the file is checked so printing its type can't recurse. */
131
- export class DeferredIterationError {
132
- readonly errorNode: Node;
133
- readonly type: Type;
134
- readonly allowAsyncIterables: boolean;
135
- readonly related: Diagnostic[];
136
-
137
- constructor(errorNode: Node, type: Type, allowAsyncIterables: boolean, related: Diagnostic[]) {
138
- this.errorNode = errorNode;
139
- this.type = type;
140
- this.allowAsyncIterables = allowAsyncIterables;
141
- this.related = related;
142
- }
143
- }
144
-
145
- /** Reports the not-iterable errors deferred while checking a file. */
146
- export function produceDeferredIterationErrors(c: Checker): void {
147
- const errors = c.deferredIterationErrors;
148
- if (errors.length === 0) return;
149
- c.deferredIterationErrors = [];
150
- for (const e of errors) {
151
- const diagnostic = reportTypeNotIterableError(c, e.errorNode, e.type, e.allowAsyncIterables);
152
- for (const d of e.related) diagnostic.addRelatedInfo(d);
153
- }
131
+ /** Defers a not-iterable error, so printing its type can't resolve types that are being resolved. */
132
+ function deferTypeNotIterableError(
133
+ c: Checker,
134
+ errorNode: Node,
135
+ t: Type,
136
+ allowAsyncIterables: boolean,
137
+ related: Diagnostic[],
138
+ ): void {
139
+ c.deferDiagnostic(errorNode, () => {
140
+ const diagnostic = reportTypeNotIterableError(c, errorNode, t, allowAsyncIterables);
141
+ for (const d of related) diagnostic.addRelatedInfo(d);
142
+ });
154
143
  }
155
144
 
156
145
  // ---- Global types
@@ -493,8 +482,7 @@ function getIterationTypesOfIterableWorker(
493
482
  for (const constituent of typesOf(t)) {
494
483
  const iterationTypes = getIterationTypesOfIterableWorker(c, constituent, use, undefined);
495
484
  if (!iterationTypes.hasTypes()) {
496
- if (errorNode !== undefined && c.saveDeferredDiagnostics)
497
- c.deferredIterationErrors.push(new DeferredIterationError(errorNode, t, allowAsync, []));
485
+ if (errorNode !== undefined) deferTypeNotIterableError(c, errorNode, t, allowAsync, []);
498
486
  return noIterationTypes();
499
487
  }
500
488
  all.push(iterationTypes);
@@ -524,8 +512,7 @@ function getIterationTypesOfIterableWorker(
524
512
  return allowAsync ? getAsyncFromSyncIterationTypes(c, iterationTypes, errorNode) : iterationTypes;
525
513
  }
526
514
  }
527
- if (errorNode !== undefined && c.saveDeferredDiagnostics)
528
- c.deferredIterationErrors.push(new DeferredIterationError(errorNode, t, allowAsync, diagnostics));
515
+ if (errorNode !== undefined) deferTypeNotIterableError(c, errorNode, t, allowAsync, diagnostics);
529
516
  return noIterationTypes();
530
517
  }
531
518
 
@@ -725,9 +712,9 @@ function getIterationTypesOfMethod(
725
712
  const mapper = (methodType as ObjectType).mapper;
726
713
  if (mapper !== undefined)
727
714
  return new IterationTypes(
728
- mapper.map(typeParameters[0]!),
729
- mapper.map(typeParameters[1]!),
730
- methodName === 'next' ? mapper.map(typeParameters[2]!) : undefined,
715
+ getMappedType(typeParameters[0]!, mapper),
716
+ getMappedType(typeParameters[1]!, mapper),
717
+ methodName === 'next' ? getMappedType(typeParameters[2]!, mapper) : undefined,
731
718
  );
732
719
  }
733
720
  }
@@ -406,7 +406,7 @@ export function isCommonJSRequire(c: Checker, node: Node): boolean {
406
406
 
407
407
  /** The type of the module a `require("m")` call names. */
408
408
  export function resolveExternalModuleTypeByLiteral(c: Checker, name: Node): Type {
409
- const moduleSymbol = resolveExternalModuleName(c, name, name, false);
409
+ const moduleSymbol = resolveExternalModuleName(c, name, name, false, undefined);
410
410
  if (moduleSymbol !== undefined) {
411
411
  const resolved = resolveExternalModuleSymbol(c, moduleSymbol, false);
412
412
  if (resolved !== undefined) return getTypeOfSymbol(c, resolved);
@@ -24,7 +24,13 @@ import {
24
24
  getText,
25
25
  getType,
26
26
  } from './ast.js';
27
- import { getSourceFileOfNode, isTypeNodeKind } from './binder-utilities.js';
27
+ import {
28
+ getSourceFileOfNode,
29
+ getSourceTextOfNode,
30
+ isEntityNameExpression,
31
+ isTypeNodeKind,
32
+ } from './binder-utilities.js';
33
+ import { isTypeAssignableTo, isTypeIdenticalTo } from './relations.js';
28
34
  import { getAttachedJSDoc, getJSDoc } from './parser.js';
29
35
  import { isInJSFile } from './ast-utilities.js';
30
36
  import { Diagnostics } from './diagnostics.js';
@@ -44,6 +50,7 @@ import {
44
50
  import { getContextualCallSignature } from './checker-contextual.js';
45
51
  import { entityNameToString, getResolvedSymbol } from './checker-expressions.js';
46
52
  import { isArrayType } from './checker-type-factory.js';
53
+ import { checkSourceElement } from './checker-source-file.js';
47
54
 
48
55
  /** The type a JSDoc type reference to a JavaScript-style name means, if it is one. */
49
56
  export function getIntendedTypeFromJSDocTypeReference(c: Checker, node: Node): Type | undefined {
@@ -142,6 +149,12 @@ export function getReturnTypeOfFullSignature(c: Checker, fn: Node): Type | undef
142
149
  return signature !== undefined ? getReturnTypeOfSignature(c, signature) : undefined;
143
150
  }
144
151
 
152
+ /** Checks the type of a JSDoc `@type` on a function as a type node. */
153
+ export function checkJSDocFullSignatureType(c: Checker, fn: Node): void {
154
+ const typeNode = getFullSignatureTypeNode(fn);
155
+ if (typeNode !== undefined) checkSourceElement(c, typeNode);
156
+ }
157
+
145
158
  /** A JSDoc `@type` on a function needs a call signature taking at least its parameters. */
146
159
  export function checkJSDocFullSignature(c: Checker, fn: Node): void {
147
160
  const typeNode = getFullSignatureTypeNode(fn);
@@ -322,39 +335,49 @@ function getIdentifierFromEntityNameExpression(node: Node): Node | undefined {
322
335
  return undefined;
323
336
  }
324
337
 
325
- /** An `@augments` or `@extends` tag naming another class than the `extends` clause. */
326
- export class AugmentsMismatch {
327
- readonly name: Node;
328
- readonly tagName: string;
329
- readonly className: string;
330
- readonly extendsName: string;
331
-
332
- constructor(name: Node, tagName: string, className: string, extendsName: string) {
333
- this.name = name;
334
- this.tagName = tagName;
335
- this.className = className;
336
- this.extendsName = extendsName;
337
- }
338
- }
339
-
340
- /** The `@augments` or `@extends` tag of a class whose class name differs from its `extends` clause. */
341
- export function findMismatchedAugmentsTag(
342
- classLike: Node,
343
- extendsType: ExpressionWithTypeArguments,
344
- ): AugmentsMismatch | undefined {
345
- const jsDoc = getAttachedJSDoc(classLike);
346
- if (jsDoc === undefined) return undefined;
338
+ /**
339
+ * Reports an `@augments` or `@extends` tag of a JavaScript class whose class doesn't match the
340
+ * `extends` clause: for an entity name, a different type; for another expression, a type the base
341
+ * type isn't assignable to.
342
+ */
343
+ export function checkJSDocAugmentsTagMatchesExtends(
344
+ c: Checker,
345
+ node: Node,
346
+ baseTypeNode: ExpressionWithTypeArguments,
347
+ baseType: Type,
348
+ ): void {
349
+ if (!isInJSFile(node)) return;
350
+ const jsDoc = getAttachedJSDoc(node);
351
+ if (jsDoc === undefined) return;
347
352
  for (const j of jsDoc) {
348
353
  const tags = (j as JSDoc).tags;
349
354
  if (tags === undefined) continue;
350
355
  for (const tag of tags.nodes) {
351
356
  if (tag.kind !== SyntaxKind.JSDocAugmentsTag) continue;
352
357
  const augments = tag as JSDocAugmentsTag;
353
- const targetName = getIdentifierFromEntityNameExpression(extendsType.expression);
358
+ const sourceType = getTypeFromTypeNode(c, augments.className);
354
359
  const sourceName = getIdentifierFromEntityNameExpression(augments.className.expression);
355
- if (targetName !== undefined && sourceName !== undefined && getText(targetName) !== getText(sourceName))
356
- return new AugmentsMismatch(sourceName, getText(augments.tagName), getText(sourceName), getText(targetName));
360
+ if (isEntityNameExpression(baseTypeNode.expression, false)) {
361
+ if (isTypeIdenticalTo(c, sourceType, baseType)) continue;
362
+ const targetName = getIdentifierFromEntityNameExpression(baseTypeNode.expression);
363
+ if (targetName !== undefined && sourceName !== undefined)
364
+ c.error(
365
+ sourceName,
366
+ Diagnostics.JSDoc_0_1_does_not_match_the_extends_2_clause,
367
+ getText(augments.tagName),
368
+ getText(sourceName),
369
+ getText(targetName),
370
+ );
371
+ } else if (sourceName !== undefined && !isTypeAssignableTo(c, baseType, sourceType)) {
372
+ const expression = baseTypeNode.expression;
373
+ c.error(
374
+ sourceName,
375
+ Diagnostics.JSDoc_0_1_does_not_match_the_extends_2_clause,
376
+ getText(augments.tagName),
377
+ getText(sourceName),
378
+ getSourceTextOfNode(getSourceFileOfNode(expression), expression),
379
+ );
380
+ }
357
381
  }
358
382
  }
359
- return undefined;
360
383
  }
@@ -1,5 +1,5 @@
1
1
  // JSX: element and fragment types, the `JSX` namespace, intrinsic elements, attributes and children.
2
- import { checkDeprecatedJsxAttribute, checkDeprecatedSignature } from './checker-deprecation.js';
2
+ import { checkDeprecatedSignature } from './checker-deprecation.js';
3
3
  import {
4
4
  type BinaryExpression,
5
5
  type JsxAttribute,
@@ -14,6 +14,7 @@ import {
14
14
  type JsxText,
15
15
  type Node,
16
16
  type NodeList,
17
+ NodeVisitor,
17
18
  type PropertyAccessExpression,
18
19
  type QualifiedName,
19
20
  type SourceFile,
@@ -287,7 +288,7 @@ function entityNameToString(node: Node): string {
287
288
  return entityNameToString(access.expression) + '.' + entityNameToString(access.name);
288
289
  }
289
290
  case SyntaxKind.QualifiedName:
290
- return entityNameToString((node as QualifiedName).left) + '.' + (node as QualifiedName).right.text;
291
+ return entityNameToString((node as QualifiedName).left) + '.' + getText((node as QualifiedName).right);
291
292
  case SyntaxKind.JsxNamespacedName:
292
293
  return jsxNameText(node);
293
294
  }
@@ -450,13 +451,17 @@ export function getJsxNamespaceContainerForImplicitImport(c: Checker, location:
450
451
  links.jsxImplicitImportContainer = c.unknownSymbol;
451
452
  return undefined;
452
453
  }
454
+ // A missing module is reported once, at the first JSX tag of the file, whichever tag is checked first.
455
+ const finder = new FirstJsxTagFinder();
456
+ file.forEachChild(finder);
453
457
  const mod = resolveExternalModule(
454
458
  c,
455
459
  specifier,
456
460
  getText(specifier),
457
461
  Diagnostics.This_JSX_tag_requires_the_module_path_0_to_exist_but_none_could_be_found_Make_sure_you_have_types_for_the_appropriate_package_installed,
458
- location,
462
+ finder.tag ?? location,
459
463
  false,
464
+ undefined,
460
465
  );
461
466
  const resolved = mod !== undefined && mod !== c.unknownSymbol ? resolveSymbol(c, mod) : undefined;
462
467
  const result = resolved !== undefined ? getMergedSymbol(c, resolved) : undefined;
@@ -464,6 +469,23 @@ export function getJsxNamespaceContainerForImplicitImport(c: Checker, location:
464
469
  return result;
465
470
  }
466
471
 
472
+ /** The first JSX element or self-closing element of a file, or the opening tag of its first fragment. */
473
+ class FirstJsxTagFinder extends NodeVisitor {
474
+ tag: Node | undefined = undefined;
475
+
476
+ visitNode(node: Node): boolean {
477
+ if (node.kind === SyntaxKind.JsxElement || node.kind === SyntaxKind.JsxSelfClosingElement) {
478
+ this.tag = node;
479
+ return true;
480
+ }
481
+ if (node.kind === SyntaxKind.JsxFragment) {
482
+ this.tag = (node as JsxFragment).openingFragment;
483
+ return true;
484
+ }
485
+ return node.forEachChild(this);
486
+ }
487
+ }
488
+
467
489
  /** The `JSX` namespace for `location`: the factory's, the runtime module's, or the global one. */
468
490
  export function getJsxNamespaceAt(c: Checker, location: Node): Symbol | undefined {
469
491
  const links = elementLinks(c, location);
@@ -967,7 +989,6 @@ export function createJsxAttributesTypeFromAttributesProperty(
967
989
  if (allAttributesTable !== undefined) allAttributesTable.set(attributeSymbol.name, attributeSymbol);
968
990
  if (jsxNameText((attributeDecl as JsxAttribute).name) === jsxChildrenPropertyName)
969
991
  explicitlySpecifyChildrenAttribute = true;
970
- if (contextualType !== undefined) checkDeprecatedJsxAttribute(c, contextualType, attributeDecl as JsxAttribute);
971
992
  if (
972
993
  contextualType !== undefined &&
973
994
  (checkMode & CheckMode.Inferential) !== 0 &&
@@ -1343,6 +1364,7 @@ export function checkJsx(c: Checker, node: Node, checkMode: CheckMode): Type {
1343
1364
  case SyntaxKind.JsxFragment:
1344
1365
  return checkJsxFragment(c, node as JsxFragment);
1345
1366
  case SyntaxKind.JsxAttributes:
1367
+ checkNodeDeferred(c, node);
1346
1368
  return createJsxAttributesTypeFromAttributesProperty(c, node.parent!, checkMode);
1347
1369
  }
1348
1370
  return c.errorType;