tsc-ts 0.0.10 → 0.1.1

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 (379) 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 +29 -18
  6. package/dist/api/compiler/ast.js +1040 -1007
  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 +136 -91
  14. package/dist/api/compiler/checker-contextual.d.ts +20 -0
  15. package/dist/api/compiler/checker-contextual.js +175 -62
  16. package/dist/api/compiler/checker-declaration-order.js +79 -79
  17. package/dist/api/compiler/checker-declarations.d.ts +1 -0
  18. package/dist/api/compiler/checker-declarations.js +160 -136
  19. package/dist/api/compiler/checker-declared-types.js +67 -65
  20. package/dist/api/compiler/checker-decorators.js +77 -77
  21. package/dist/api/compiler/checker-deprecation.d.ts +8 -3
  22. package/dist/api/compiler/checker-deprecation.js +76 -55
  23. package/dist/api/compiler/checker-destructuring.js +47 -45
  24. package/dist/api/compiler/checker-elaboration.js +24 -24
  25. package/dist/api/compiler/checker-emit-helpers.js +4 -4
  26. package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
  27. package/dist/api/compiler/checker-emit-resolver.js +25 -13
  28. package/dist/api/compiler/checker-evaluator.js +9 -9
  29. package/dist/api/compiler/checker-expressions.js +258 -212
  30. package/dist/api/compiler/checker-functions.js +113 -107
  31. package/dist/api/compiler/checker-generated-code.d.ts +0 -11
  32. package/dist/api/compiler/checker-generated-code.js +28 -52
  33. package/dist/api/compiler/checker-grammar.d.ts +1 -0
  34. package/dist/api/compiler/checker-grammar.js +469 -438
  35. package/dist/api/compiler/checker-heritage.js +91 -93
  36. package/dist/api/compiler/checker-inference.d.ts +77 -5
  37. package/dist/api/compiler/checker-inference.js +487 -113
  38. package/dist/api/compiler/checker-iteration.d.ts +0 -10
  39. package/dist/api/compiler/checker-iteration.js +35 -52
  40. package/dist/api/compiler/checker-javascript.js +14 -14
  41. package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
  42. package/dist/api/compiler/checker-jsdoc.js +67 -58
  43. package/dist/api/compiler/checker-jsx.js +107 -89
  44. package/dist/api/compiler/checker-members.d.ts +9 -2
  45. package/dist/api/compiler/checker-members.js +210 -74
  46. package/dist/api/compiler/checker-modules.d.ts +15 -6
  47. package/dist/api/compiler/checker-modules.js +469 -309
  48. package/dist/api/compiler/checker-narrowing.js +273 -189
  49. package/dist/api/compiler/checker-object-literals.js +25 -22
  50. package/dist/api/compiler/checker-operators.js +126 -118
  51. package/dist/api/compiler/checker-overloads.js +27 -27
  52. package/dist/api/compiler/checker-property-access.js +59 -55
  53. package/dist/api/compiler/checker-services.d.ts +1 -0
  54. package/dist/api/compiler/checker-services.js +222 -210
  55. package/dist/api/compiler/checker-signatures.js +65 -49
  56. package/dist/api/compiler/checker-source-file.d.ts +5 -0
  57. package/dist/api/compiler/checker-source-file.js +154 -130
  58. package/dist/api/compiler/checker-statements.js +33 -32
  59. package/dist/api/compiler/checker-super.js +50 -50
  60. package/dist/api/compiler/checker-symbol-types.js +109 -93
  61. package/dist/api/compiler/checker-symbols.d.ts +13 -1
  62. package/dist/api/compiler/checker-symbols.js +264 -149
  63. package/dist/api/compiler/checker-type-factory.d.ts +5 -0
  64. package/dist/api/compiler/checker-type-factory.js +190 -46
  65. package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
  66. package/dist/api/compiler/checker-type-nodes.js +179 -141
  67. package/dist/api/compiler/checker-type-operators.d.ts +2 -0
  68. package/dist/api/compiler/checker-type-operators.js +110 -63
  69. package/dist/api/compiler/checker-types.d.ts +80 -3
  70. package/dist/api/compiler/checker-types.js +121 -2
  71. package/dist/api/compiler/checker-unused.js +114 -118
  72. package/dist/api/compiler/checker-utilities.js +11 -11
  73. package/dist/api/compiler/checker.d.ts +97 -31
  74. package/dist/api/compiler/checker.js +149 -35
  75. package/dist/api/compiler/command-line.d.ts +1 -3
  76. package/dist/api/compiler/command-line.js +47 -44
  77. package/dist/api/compiler/compile-program.d.ts +24 -4
  78. package/dist/api/compiler/compile-program.js +53 -26
  79. package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
  80. package/dist/api/compiler/diagnostic-messages.js +128 -122
  81. package/dist/api/compiler/diagnostics.js +7 -7
  82. package/dist/api/compiler/emitter.d.ts +7 -1
  83. package/dist/api/compiler/emitter.js +53 -11
  84. package/dist/api/compiler/expr-record.d.ts +11 -0
  85. package/dist/api/compiler/expr-record.js +53 -0
  86. package/dist/api/compiler/file-include.d.ts +2 -1
  87. package/dist/api/compiler/file-include.js +11 -7
  88. package/dist/api/compiler/file-loader.d.ts +10 -0
  89. package/dist/api/compiler/file-loader.js +138 -41
  90. package/dist/api/compiler/identifier-name.d.ts +9 -0
  91. package/dist/api/compiler/identifier-name.js +10 -0
  92. package/dist/api/compiler/instantiation.d.ts +7 -0
  93. package/dist/api/compiler/instantiation.js +101 -49
  94. package/dist/api/compiler/jsdoc.js +27 -25
  95. package/dist/api/compiler/link-tables.d.ts +48 -18
  96. package/dist/api/compiler/link-tables.js +80 -37
  97. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  98. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  99. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  100. package/dist/api/compiler/locales/de-DE.js +1 -1
  101. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  102. package/dist/api/compiler/locales/es-ES.js +1 -1
  103. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  104. package/dist/api/compiler/locales/fr-FR.js +1 -1
  105. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  106. package/dist/api/compiler/locales/it-IT.js +1 -1
  107. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  108. package/dist/api/compiler/locales/ja-JP.js +1 -1
  109. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  110. package/dist/api/compiler/locales/ko-KR.js +1 -1
  111. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  112. package/dist/api/compiler/locales/pl-PL.js +1 -1
  113. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  114. package/dist/api/compiler/locales/pt-BR.js +1 -1
  115. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  116. package/dist/api/compiler/locales/ru-RU.js +1 -1
  117. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  118. package/dist/api/compiler/locales/tr-TR.js +1 -1
  119. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  120. package/dist/api/compiler/locales/zh-CN.js +1 -1
  121. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  122. package/dist/api/compiler/locales/zh-TW.js +1 -1
  123. package/dist/api/compiler/module-resolution-types.js +6 -6
  124. package/dist/api/compiler/module-resolution.d.ts +10 -1
  125. package/dist/api/compiler/module-resolution.js +115 -84
  126. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  127. package/dist/api/compiler/module-specifiers.js +24 -18
  128. package/dist/api/compiler/name-resolver.js +74 -65
  129. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  130. package/dist/api/compiler/node-builder-names.js +210 -90
  131. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  132. package/dist/api/compiler/node-builder-reuse.js +23 -22
  133. package/dist/api/compiler/node-builder.d.ts +18 -1
  134. package/dist/api/compiler/node-builder.js +191 -102
  135. package/dist/api/compiler/option-declarations.d.ts +2 -6
  136. package/dist/api/compiler/option-declarations.js +315 -375
  137. package/dist/api/compiler/options.d.ts +15 -33
  138. package/dist/api/compiler/options.js +21 -54
  139. package/dist/api/compiler/output-paths.d.ts +4 -1
  140. package/dist/api/compiler/output-paths.js +6 -11
  141. package/dist/api/compiler/package-json.d.ts +3 -3
  142. package/dist/api/compiler/package-json.js +11 -10
  143. package/dist/api/compiler/parser.d.ts +42 -20
  144. package/dist/api/compiler/parser.js +318 -224
  145. package/dist/api/compiler/path.d.ts +9 -0
  146. package/dist/api/compiler/path.js +20 -3
  147. package/dist/api/compiler/printer/emit-context.d.ts +3 -1
  148. package/dist/api/compiler/printer/emit-context.js +16 -1
  149. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  150. package/dist/api/compiler/printer/factory-base.js +7 -3
  151. package/dist/api/compiler/printer/factory.js +6 -3
  152. package/dist/api/compiler/printer/helpers.js +10 -1
  153. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  154. package/dist/api/compiler/printer/name-generator.js +35 -16
  155. package/dist/api/compiler/printer/printer.d.ts +1 -0
  156. package/dist/api/compiler/printer/printer.js +306 -283
  157. package/dist/api/compiler/printer/utilities.js +149 -147
  158. package/dist/api/compiler/program-checker.d.ts +8 -2
  159. package/dist/api/compiler/program-checker.js +84 -34
  160. package/dist/api/compiler/program-utilities.d.ts +3 -1
  161. package/dist/api/compiler/program-utilities.js +28 -15
  162. package/dist/api/compiler/program.d.ts +2 -0
  163. package/dist/api/compiler/program.js +69 -57
  164. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  165. package/dist/api/compiler/pseudo-bigint.js +18 -0
  166. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  167. package/dist/api/compiler/regexp-checker.js +93 -76
  168. package/dist/api/compiler/relations.d.ts +27 -4
  169. package/dist/api/compiler/relations.js +337 -180
  170. package/dist/api/compiler/reparser.js +64 -59
  171. package/dist/api/compiler/scanner.d.ts +27 -2
  172. package/dist/api/compiler/scanner.js +181 -150
  173. package/dist/api/compiler/shared-results.d.ts +696 -0
  174. package/dist/api/compiler/shared-results.js +2905 -0
  175. package/dist/api/compiler/sourcemap.js +2 -2
  176. package/dist/api/compiler/symbol-accessibility.js +87 -74
  177. package/dist/api/compiler/symbol.d.ts +22 -13
  178. package/dist/api/compiler/symbol.js +15 -1
  179. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  180. package/dist/api/compiler/transformers/alias-references.js +247 -139
  181. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  182. package/dist/api/compiler/transformers/async.d.ts +0 -1
  183. package/dist/api/compiler/transformers/async.js +64 -77
  184. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  185. package/dist/api/compiler/transformers/class-fields.js +81 -78
  186. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  187. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  188. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  189. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  190. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  191. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  192. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  193. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  194. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  195. package/dist/api/compiler/transformers/declarations.js +307 -239
  196. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  197. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  198. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  199. package/dist/api/compiler/transformers/destructuring.js +19 -18
  200. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  201. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  202. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  203. package/dist/api/compiler/transformers/for-await.js +25 -25
  204. package/dist/api/compiler/transformers/import-elision.js +14 -14
  205. package/dist/api/compiler/transformers/jsx.js +12 -12
  206. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  207. package/dist/api/compiler/transformers/module.js +8 -8
  208. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  209. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  210. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  211. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  212. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  213. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  214. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  215. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  216. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  217. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  218. package/dist/api/compiler/transformers/using.js +12 -12
  219. package/dist/api/compiler/transformers/utilities.js +77 -77
  220. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  221. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  222. package/dist/api/compiler/tsconfig.d.ts +10 -2
  223. package/dist/api/compiler/tsconfig.js +136 -48
  224. package/dist/api/compiler/type-printer.js +40 -3
  225. package/dist/api/compiler/types.d.ts +2 -1
  226. package/dist/api/library/ast.generated.d.ts +42 -39
  227. package/dist/api/library/ast.generated.js +1 -1
  228. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  229. package/dist/api/library/compiler-options.generated.js +1 -1
  230. package/dist/api/library/disk.js +12 -1
  231. package/dist/api/library/enums.generated.d.ts +206 -206
  232. package/dist/api/library/enums.generated.js +206 -206
  233. package/dist/api/library/nodes.js +26 -26
  234. package/package.json +9 -9
  235. package/src/compiler/ast-utilities.ts +99 -7
  236. package/src/compiler/ast.ts +74 -38
  237. package/src/compiler/binder.ts +39 -4
  238. package/src/compiler/cgroup.ts +157 -0
  239. package/src/compiler/character-codes.ts +2 -2
  240. package/src/compiler/checker-calls.ts +76 -8
  241. package/src/compiler/checker-classes.ts +80 -25
  242. package/src/compiler/checker-contextual.ts +110 -1
  243. package/src/compiler/checker-declarations.ts +31 -4
  244. package/src/compiler/checker-declared-types.ts +8 -5
  245. package/src/compiler/checker-decorators.ts +1 -1
  246. package/src/compiler/checker-deprecation.ts +29 -8
  247. package/src/compiler/checker-destructuring.ts +10 -3
  248. package/src/compiler/checker-emit-helpers.ts +1 -0
  249. package/src/compiler/checker-emit-resolver.ts +16 -6
  250. package/src/compiler/checker-expressions.ts +95 -47
  251. package/src/compiler/checker-functions.ts +21 -6
  252. package/src/compiler/checker-generated-code.ts +2 -22
  253. package/src/compiler/checker-grammar.ts +133 -60
  254. package/src/compiler/checker-heritage.ts +22 -21
  255. package/src/compiler/checker-inference.ts +514 -87
  256. package/src/compiler/checker-iteration.ts +18 -31
  257. package/src/compiler/checker-javascript.ts +1 -1
  258. package/src/compiler/checker-jsdoc.ts +50 -27
  259. package/src/compiler/checker-jsx.ts +28 -5
  260. package/src/compiler/checker-members.ts +197 -55
  261. package/src/compiler/checker-modules.ts +332 -65
  262. package/src/compiler/checker-narrowing.ts +98 -19
  263. package/src/compiler/checker-object-literals.ts +3 -0
  264. package/src/compiler/checker-operators.ts +11 -4
  265. package/src/compiler/checker-property-access.ts +7 -2
  266. package/src/compiler/checker-services.ts +39 -12
  267. package/src/compiler/checker-signatures.ts +15 -1
  268. package/src/compiler/checker-source-file.ts +39 -13
  269. package/src/compiler/checker-statements.ts +3 -2
  270. package/src/compiler/checker-symbol-types.ts +29 -6
  271. package/src/compiler/checker-symbols.ts +158 -15
  272. package/src/compiler/checker-type-factory.ts +173 -35
  273. package/src/compiler/checker-type-nodes.ts +46 -3
  274. package/src/compiler/checker-type-operators.ts +83 -26
  275. package/src/compiler/checker-types.ts +147 -4
  276. package/src/compiler/checker-unused.ts +9 -14
  277. package/src/compiler/checker.ts +175 -41
  278. package/src/compiler/command-line.ts +28 -28
  279. package/src/compiler/compile-program.ts +59 -25
  280. package/src/compiler/decoder.ts +15 -5
  281. package/src/compiler/diagnostic-messages.ts +1973 -1892
  282. package/src/compiler/doctor-report.ts +133 -0
  283. package/src/compiler/emitter.ts +57 -8
  284. package/src/compiler/encoder.ts +23 -8
  285. package/src/compiler/expr-record.ts +59 -0
  286. package/src/compiler/file-include.ts +9 -3
  287. package/src/compiler/file-loader.ts +139 -32
  288. package/src/compiler/help.ts +10 -14
  289. package/src/compiler/identifier-name.ts +13 -0
  290. package/src/compiler/incremental.ts +86 -18
  291. package/src/compiler/init.ts +2 -7
  292. package/src/compiler/instantiation.ts +77 -22
  293. package/src/compiler/jsdoc.ts +7 -3
  294. package/src/compiler/link-tables.ts +82 -37
  295. package/src/compiler/locales/cs-CZ.ts +1 -1
  296. package/src/compiler/locales/de-DE.ts +1 -1
  297. package/src/compiler/locales/es-ES.ts +1 -1
  298. package/src/compiler/locales/fr-FR.ts +1 -1
  299. package/src/compiler/locales/it-IT.ts +1 -1
  300. package/src/compiler/locales/ja-JP.ts +1 -1
  301. package/src/compiler/locales/ko-KR.ts +1 -1
  302. package/src/compiler/locales/pl-PL.ts +1 -1
  303. package/src/compiler/locales/pt-BR.ts +1 -1
  304. package/src/compiler/locales/ru-RU.ts +1 -1
  305. package/src/compiler/locales/tr-TR.ts +1 -1
  306. package/src/compiler/locales/zh-CN.ts +1 -1
  307. package/src/compiler/locales/zh-TW.ts +1 -1
  308. package/src/compiler/module-resolution.ts +44 -8
  309. package/src/compiler/module-specifiers.ts +62 -20
  310. package/src/compiler/name-resolver.ts +9 -1
  311. package/src/compiler/node-builder-names.ts +236 -54
  312. package/src/compiler/node-builder-pseudo.ts +4 -7
  313. package/src/compiler/node-builder-reuse.ts +5 -4
  314. package/src/compiler/node-builder.ts +130 -31
  315. package/src/compiler/option-declarations.ts +33 -103
  316. package/src/compiler/options.ts +23 -62
  317. package/src/compiler/output-paths.ts +5 -18
  318. package/src/compiler/package-entrypoints.ts +345 -0
  319. package/src/compiler/package-json.ts +4 -4
  320. package/src/compiler/parallel-check.ts +543 -147
  321. package/src/compiler/parallel-emit.ts +4 -4
  322. package/src/compiler/parser.ts +166 -47
  323. package/src/compiler/path.ts +22 -2
  324. package/src/compiler/printer/emit-context.ts +16 -0
  325. package/src/compiler/printer/factory-base.ts +10 -3
  326. package/src/compiler/printer/factory.ts +7 -3
  327. package/src/compiler/printer/helpers.ts +10 -1
  328. package/src/compiler/printer/name-generator.ts +24 -2
  329. package/src/compiler/printer/printer.ts +39 -16
  330. package/src/compiler/printer/utilities.ts +8 -2
  331. package/src/compiler/program-checker.ts +53 -5
  332. package/src/compiler/program-utilities.ts +23 -10
  333. package/src/compiler/program.ts +13 -1
  334. package/src/compiler/pseudo-bigint.ts +17 -0
  335. package/src/compiler/regexp-checker.ts +63 -30
  336. package/src/compiler/relations.ts +233 -77
  337. package/src/compiler/reparser.ts +14 -5
  338. package/src/compiler/run-config.ts +1383 -0
  339. package/src/compiler/run-record-read.ts +87 -0
  340. package/src/compiler/run-records.ts +575 -0
  341. package/src/compiler/scanner.ts +166 -120
  342. package/src/compiler/shared-results.ts +3144 -0
  343. package/src/compiler/show-config.ts +18 -1
  344. package/src/compiler/sourcemap.ts +2 -2
  345. package/src/compiler/symbol-accessibility.ts +26 -3
  346. package/src/compiler/symbol.ts +31 -14
  347. package/src/compiler/syntax-kind.ts +188 -187
  348. package/src/compiler/thread-entry.ts +22 -3
  349. package/src/compiler/transformers/alias-references.ts +123 -4
  350. package/src/compiler/transformers/async.ts +2 -17
  351. package/src/compiler/transformers/class-fields.ts +13 -12
  352. package/src/compiler/transformers/commonjs-module.ts +11 -7
  353. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  354. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  355. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  356. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  357. package/src/compiler/transformers/declarations.ts +136 -49
  358. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  359. package/src/compiler/transformers/destructuring.ts +4 -3
  360. package/src/compiler/transformers/external-module-info.ts +1 -1
  361. package/src/compiler/transformers/jsx.ts +2 -1
  362. package/src/compiler/transformers/reference-resolver.ts +83 -19
  363. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  364. package/src/compiler/transformers/syntax-facts.ts +2 -7
  365. package/src/compiler/transformers/type-eraser.ts +10 -1
  366. package/src/compiler/transformers/type-serialization.ts +3 -2
  367. package/src/compiler/transformers/visitor-base.ts +2 -1
  368. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  369. package/src/compiler/tsc-build.ts +67 -6
  370. package/src/compiler/tsc-cli.ts +35 -4
  371. package/src/compiler/tsc-compile.ts +220 -10
  372. package/src/compiler/tsc-watch.ts +97 -47
  373. package/src/compiler/tsconfig.ts +176 -19
  374. package/src/compiler/type-printer.ts +36 -2
  375. package/src/compiler/types.ts +2 -1
  376. package/src/library/ast.generated.ts +57 -41
  377. package/src/library/compiler-options.generated.ts +117 -103
  378. package/src/library/disk.ts +10 -1
  379. package/src/library/enums.generated.ts +196 -196
@@ -1,6 +1,6 @@
1
1
  import { type Diagnostic } from './diagnostics.js';
2
2
  import { type OptionDeclaration } from './option-declarations.js';
3
- import { type BuildOptions, type CompilerOptions, type OptionValue, type WatchOptions } from './options.js';
3
+ import { type BuildOptions, type CompilerOptions, type OptionValue } from './options.js';
4
4
  /** Reads response files. */
5
5
  export declare abstract class CommandLineHost {
6
6
  readonly currentDirectory: string;
@@ -10,7 +10,6 @@ export declare abstract class CommandLineHost {
10
10
  }
11
11
  export interface ParsedCommandLine {
12
12
  readonly options: CompilerOptions;
13
- readonly watchOptions: WatchOptions;
14
13
  readonly fileNames: readonly string[];
15
14
  readonly errors: readonly Diagnostic[];
16
15
  /** Options as written, keyed by declaration name in first-seen order. Paths are not made absolute. */
@@ -20,7 +19,6 @@ export interface ParsedBuildCommandLine {
20
19
  readonly buildOptions: BuildOptions;
21
20
  /** Only options shared with `tsc`, and `build`. */
22
21
  readonly compilerOptions: CompilerOptions;
23
- readonly watchOptions: WatchOptions;
24
22
  /** Project paths as given; `["."]` if none. */
25
23
  readonly projects: readonly string[];
26
24
  readonly errors: readonly Diagnostic[];
@@ -4,9 +4,10 @@
4
4
  import { isUnicodeWhiteSpace, isWhiteSpaceLike } from './character-codes.js';
5
5
  import { createCompilerDiagnostic } from './diagnostics.js';
6
6
  import { isValidLocale } from './locale.js';
7
- import { buildOption, buildOptionsByName, compilerOptionsByName, watchOptionsByName, } from './option-declarations.js';
8
- import { setBuildOption, setCompilerOption, setWatchOption, } from './options.js';
9
- import { getNormalizedAbsolutePath } from './path.js';
7
+ import { buildOption, buildOptionsByName, compilerOptionsByName, } from './option-declarations.js';
8
+ import { setBuildOption, setCompilerOption, } from './options.js';
9
+ import { getNormalizedAbsolutePath, isNetworkPathValue } from './path.js';
10
+ import { getSpellingSuggestion } from './spelling.js';
10
11
  /** Reads response files. */
11
12
  export class CommandLineHost {
12
13
  currentDirectory;
@@ -16,43 +17,37 @@ export class CommandLineHost {
16
17
  }
17
18
  const compilerMode = {
18
19
  options: compilerOptionsByName,
19
- unknownOption: 1121 /* Diagnostics.Unknown_compiler_option_0 */,
20
- missingArgument: 1222 /* Diagnostics.Compiler_option_0_expects_an_argument */,
20
+ unknownOption: 1128 /* Diagnostics.Unknown_compiler_option_0 */,
21
+ unknownOptionDidYouMean: 1130 /* Diagnostics.Unknown_compiler_option_0_Did_you_mean_1 */,
22
+ missingArgument: 1233 /* Diagnostics.Compiler_option_0_expects_an_argument */,
21
23
  otherModeOptions: buildOptionsByName,
22
- wrongMode: 1167 /* Diagnostics.Compiler_option_0_may_only_be_used_with_build */,
24
+ wrongMode: 1174 /* Diagnostics.Compiler_option_0_may_only_be_used_with_build */,
23
25
  };
24
26
  const buildMode = {
25
27
  options: buildOptionsByName,
26
- unknownOption: 1147 /* Diagnostics.Unknown_build_option_0 */,
27
- missingArgument: 1148 /* Diagnostics.Build_option_0_requires_a_value_of_type_1 */,
28
+ unknownOption: 1154 /* Diagnostics.Unknown_build_option_0 */,
29
+ unknownOptionDidYouMean: 1159 /* Diagnostics.Unknown_build_option_0_Did_you_mean_1 */,
30
+ missingArgument: 1155 /* Diagnostics.Build_option_0_requires_a_value_of_type_1 */,
28
31
  otherModeOptions: compilerOptionsByName,
29
- wrongMode: 1168 /* Diagnostics.Compiler_option_0_may_not_be_used_with_build */,
30
- };
31
- const watchMode = {
32
- options: watchOptionsByName,
33
- unknownOption: 1153 /* Diagnostics.Unknown_watch_option_0 */,
34
- missingArgument: 1155 /* Diagnostics.Watch_option_0_requires_a_value_of_type_1 */,
32
+ wrongMode: 1175 /* Diagnostics.Compiler_option_0_may_not_be_used_with_build */,
35
33
  };
36
34
  export function parseCommandLine(args, host) {
37
35
  const parser = new CommandLineParser(compilerMode, host);
38
36
  parser.parseArguments(args);
39
37
  const cwd = host.currentDirectory;
40
38
  const options = {};
41
- const watchOptions = {};
42
39
  for (const [name, value] of parser.raw) {
43
40
  if (parser.droppedLists.has(name))
44
41
  continue;
45
42
  setCompilerOption(options, name, toAbsolutePaths(name, value, cwd));
46
- setWatchOption(watchOptions, name, value);
47
43
  }
48
- return { options, watchOptions, fileNames: parser.fileNames, errors: parser.errors, raw: parser.raw };
44
+ return { options, fileNames: parser.fileNames, errors: parser.errors, raw: parser.raw };
49
45
  }
50
46
  export function parseBuildCommandLine(args, host) {
51
47
  const parser = new CommandLineParser(buildMode, host);
52
48
  parser.parseArguments(args);
53
49
  const buildOptions = {};
54
50
  const compilerOptions = {};
55
- const watchOptions = {};
56
51
  for (const [name, value] of parser.raw) {
57
52
  if (parser.droppedLists.has(name))
58
53
  continue;
@@ -61,23 +56,21 @@ export function parseBuildCommandLine(args, host) {
61
56
  setCompilerOption(compilerOptions, name, value);
62
57
  }
63
58
  setBuildOption(buildOptions, name, value);
64
- setWatchOption(watchOptions, name, value);
65
59
  }
66
60
  const errors = parser.errors;
67
61
  const { clean, force, verbose, dry } = buildOptions;
68
62
  const watch = compilerOptions.watch;
69
63
  if (clean === true && force === true)
70
- errors.push(createCompilerDiagnostic(1465 /* Diagnostics.Options_0_and_1_cannot_be_combined */, 'clean', 'force'));
64
+ errors.push(createCompilerDiagnostic(1476 /* Diagnostics.Options_0_and_1_cannot_be_combined */, 'clean', 'force'));
71
65
  if (clean === true && verbose === true)
72
- errors.push(createCompilerDiagnostic(1465 /* Diagnostics.Options_0_and_1_cannot_be_combined */, 'clean', 'verbose'));
66
+ errors.push(createCompilerDiagnostic(1476 /* Diagnostics.Options_0_and_1_cannot_be_combined */, 'clean', 'verbose'));
73
67
  if (clean === true && watch === true)
74
- errors.push(createCompilerDiagnostic(1465 /* Diagnostics.Options_0_and_1_cannot_be_combined */, 'clean', 'watch'));
68
+ errors.push(createCompilerDiagnostic(1476 /* Diagnostics.Options_0_and_1_cannot_be_combined */, 'clean', 'watch'));
75
69
  if (watch === true && dry === true)
76
- errors.push(createCompilerDiagnostic(1465 /* Diagnostics.Options_0_and_1_cannot_be_combined */, 'watch', 'dry'));
70
+ errors.push(createCompilerDiagnostic(1476 /* Diagnostics.Options_0_and_1_cannot_be_combined */, 'watch', 'dry'));
77
71
  return {
78
72
  buildOptions,
79
73
  compilerOptions,
80
- watchOptions,
81
74
  projects: parser.fileNames.length > 0 ? parser.fileNames : ['.'],
82
75
  errors,
83
76
  raw: parser.raw,
@@ -109,6 +102,8 @@ class CommandLineParser {
109
102
  * though `raw` (and so `--init`) has `[]`.
110
103
  */
111
104
  droppedLists = new Set();
105
+ /** Response files being read, so one that includes itself is skipped. */
106
+ responseFiles = new Set();
112
107
  constructor(mode, host) {
113
108
  this.mode = mode;
114
109
  this.host = host;
@@ -126,16 +121,10 @@ class CommandLineParser {
126
121
  else if (arg.startsWith('-')) {
127
122
  const name = arg.startsWith('--') ? arg.slice(2) : arg.slice(1);
128
123
  const option = this.mode.options.find(name, true);
129
- if (option !== undefined) {
124
+ if (option !== undefined)
130
125
  i = this.parseOptionValue(args, i, option, this.mode);
131
- }
132
- else {
133
- const watchOption = watchOptionsByName.find(name, true);
134
- if (watchOption !== undefined)
135
- i = this.parseOptionValue(args, i, watchOption, watchMode);
136
- else
137
- this.errors.push(this.unknownOptionError(name, arg));
138
- }
126
+ else
127
+ this.errors.push(this.unknownOptionError(name, arg));
139
128
  }
140
129
  else {
141
130
  this.fileNames.push(arg);
@@ -145,17 +134,27 @@ class CommandLineParser {
145
134
  unknownOptionError(name, arg) {
146
135
  const other = this.mode.otherModeOptions?.get(name);
147
136
  if (other !== undefined && this.mode.wrongMode !== undefined) {
148
- const message = other.name === 'build' ? 1464 /* Diagnostics.Option_build_must_be_the_first_command_line_argument */ : this.mode.wrongMode;
137
+ const message = other.name === 'build' ? 1475 /* Diagnostics.Option_build_must_be_the_first_command_line_argument */ : this.mode.wrongMode;
149
138
  return createCompilerDiagnostic(message, name);
150
139
  }
140
+ const suggestion = getSpellingSuggestion(name, this.mode.options.names());
141
+ if (suggestion !== '')
142
+ return createCompilerDiagnostic(this.mode.unknownOptionDidYouMean, arg, suggestion);
151
143
  return createCompilerDiagnostic(this.mode.unknownOption, arg);
152
144
  }
153
145
  /** Splits a response file into arguments at whitespace; `"` quotes an argument. */
154
146
  parseResponseFile(fileName) {
155
147
  const path = getNormalizedAbsolutePath(fileName, this.host.currentDirectory);
148
+ if (this.responseFiles.has(path))
149
+ return;
150
+ this.responseFiles.add(path);
151
+ this.readResponseFile(fileName, path);
152
+ this.responseFiles.delete(path);
153
+ }
154
+ readResponseFile(fileName, path) {
156
155
  const text = this.host.readFile(path);
157
156
  if (text === undefined) {
158
- this.errors.push(createCompilerDiagnostic(1158 /* Diagnostics.Cannot_read_file_0 */, path));
157
+ this.errors.push(createCompilerDiagnostic(1165 /* Diagnostics.Cannot_read_file_0 */, path));
159
158
  return;
160
159
  }
161
160
  const args = [];
@@ -175,11 +174,11 @@ class CommandLineParser {
175
174
  pos++;
176
175
  }
177
176
  else {
178
- this.errors.push(createCompilerDiagnostic(1223 /* Diagnostics.Unterminated_quoted_string_in_response_file_0 */, path));
177
+ // The file name as written.
178
+ this.errors.push(createCompilerDiagnostic(1234 /* Diagnostics.Unterminated_quoted_string_in_response_file_0 */, fileName));
179
179
  }
180
180
  }
181
181
  else {
182
- // tsgo panics when the file ends in an argument; tsc accepts it.
183
182
  while (pos < text.length && text.charCodeAt(pos) > 32)
184
183
  pos++;
185
184
  args.push(text.slice(start, pos));
@@ -202,10 +201,10 @@ class CommandLineParser {
202
201
  this.raw.set(name, false);
203
202
  return i + 1;
204
203
  }
205
- this.errors.push(createCompilerDiagnostic(1382 /* Diagnostics.Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_false_or_null_on_command_line */, name));
204
+ this.errors.push(createCompilerDiagnostic(1393 /* Diagnostics.Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_false_or_null_on_command_line */, name));
206
205
  return value === 'true' ? i + 1 : i;
207
206
  }
208
- this.errors.push(createCompilerDiagnostic(1237 /* Diagnostics.Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_null_on_command_line */, name));
207
+ this.errors.push(createCompilerDiagnostic(1248 /* Diagnostics.Option_0_can_only_be_specified_in_tsconfig_json_file_or_set_to_null_on_command_line */, name));
209
208
  return value !== '' && !value.startsWith('-') ? i + 1 : i;
210
209
  }
211
210
  if (next === undefined) {
@@ -234,7 +233,7 @@ class CommandLineParser {
234
233
  this.raw.set(name, value);
235
234
  }
236
235
  else {
237
- this.errors.push(createCompilerDiagnostic(1116 /* Diagnostics.Option_0_requires_value_to_be_greater_than_1 */, name, String(option.minValue ?? 0)));
236
+ this.errors.push(createCompilerDiagnostic(1123 /* Diagnostics.Option_0_requires_value_to_be_greater_than_1 */, name, String(option.minValue ?? 0)));
238
237
  }
239
238
  return i + 1;
240
239
  }
@@ -243,7 +242,11 @@ class CommandLineParser {
243
242
  this.raw.set(name, next !== 'false');
244
243
  return next === 'true' || next === 'false' ? i + 1 : i;
245
244
  case 'string':
246
- if (this.validateString(option, next))
245
+ if (!this.validateString(option, next))
246
+ return i + 1;
247
+ if (option.isFilePath === true && isNetworkPathValue(next, this.host.currentDirectory))
248
+ this.errors.push(createCompilerDiagnostic(1195 /* Diagnostics.Network_path_0_is_not_supported */, next));
249
+ else
247
250
  this.raw.set(name, next);
248
251
  return i + 1;
249
252
  case 'list': {
@@ -306,7 +309,7 @@ class CommandLineParser {
306
309
  }
307
310
  }
308
311
  else if (option.extraValidation === 'locale' && !isValidLocale(value)) {
309
- this.errors.push(createCompilerDiagnostic(1225 /* Diagnostics.Locale_must_be_an_IETF_BCP_47_language_tag_Examples_Colon_0_1 */, 'en', 'ja-jp'));
312
+ this.errors.push(createCompilerDiagnostic(1236 /* Diagnostics.Locale_must_be_an_IETF_BCP_47_language_tag_Examples_Colon_0_1 */, 'en', 'ja-jp'));
310
313
  return false;
311
314
  }
312
315
  return true;
@@ -320,7 +323,7 @@ function valueTypeName(option) {
320
323
  return option.kind;
321
324
  }
322
325
  function invalidEnumValueError(option) {
323
- return createCompilerDiagnostic(1224 /* Diagnostics.Argument_for_0_option_must_be_Colon_1 */, '--' + option.name, enumNamesList(option));
326
+ return createCompilerDiagnostic(1235 /* Diagnostics.Argument_for_0_option_must_be_Colon_1 */, '--' + option.name, enumNamesList(option));
324
327
  }
325
328
  /** `'a', 'b', 'c'`: the option's value names without deprecated ones. */
326
329
  export function enumNamesList(option) {
@@ -340,7 +343,7 @@ function specError(spec) {
340
343
  return undefined;
341
344
  const lastDotDot = spec.endsWith('/..') ? spec.length : spec.lastIndexOf('/../');
342
345
  return lastDotDot > wildcard
343
- ? 1140 /* Diagnostics.File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0 */
346
+ ? 1147 /* Diagnostics.File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0 */
344
347
  : undefined;
345
348
  }
346
349
  /** Parses a decimal 64-bit integer with an optional sign, like Go's `strconv.Atoi`. */
@@ -105,6 +105,16 @@ export declare abstract class CompilerProgram {
105
105
  readonly times: CompileTimes;
106
106
  readonly emitter: ProgramEmitter;
107
107
  constructor(checked: CheckedProgram, times: CompileTimes);
108
+ /**
109
+ * Whether this run checked the program, which `getDiagnosticsOfProgram` sets when it checks it. A run
110
+ * stopped before checking, by syntax errors or `--noCheck`, keeps no record (`run-records.ts`).
111
+ */
112
+ checkedTheProgram: boolean;
113
+ /**
114
+ * The time spent in declaration emit while checking, to count as emit time rather than check time, since
115
+ * the last call. Only an incremental program emits while checking, to compute signatures.
116
+ */
117
+ takeNestedEmitTime(): number;
108
118
  get program(): Program;
109
119
  get options(): CompilerOptions;
110
120
  getConfigFileParsingDiagnostics(): readonly Diagnostic[];
@@ -112,6 +122,12 @@ export declare abstract class CompilerProgram {
112
122
  getProgramDiagnostics(): Diagnostic[];
113
123
  /** See `CheckedProgram.getGlobalDiagnostics`. */
114
124
  getGlobalDiagnostics(withCheckerThreads?: boolean): Diagnostic[];
125
+ /**
126
+ * Whether the global diagnostics found by checking are reported after the semantic diagnostics. An
127
+ * incremental program has them in the semantic diagnostics of the files they were found in
128
+ * (`CheckedProgram.globalsInFileDiagnostics`).
129
+ */
130
+ reportsGlobalDiagnosticsOfChecking(): boolean;
115
131
  /** Semantic diagnostics of every file. */
116
132
  abstract getSemanticDiagnostics(): Diagnostic[];
117
133
  /** Declaration emit errors of every file. */
@@ -131,12 +147,16 @@ export declare class PlainProgram extends CompilerProgram {
131
147
  /** Under `noEmitOnError`, a skipped emit with the errors that prevent it; otherwise `undefined`. */
132
148
  export declare function handleNoEmitOnError(program: CompilerProgram): EmitResult | undefined;
133
149
  /**
134
- * Config and syntax errors; without syntax errors, program, global and semantic errors too, and
135
- * declaration errors under `noEmit` (or `withDeclarationDiagnostics`). With `declarationsLater`, the
136
- * declaration errors are left to `program.emit`, which reports them under `noEmit` (without
137
- * `noEmitOnError`) whether or not other errors were found.
150
+ * Config and syntax errors; without syntax errors, program, global and semantic errors too, and, when
151
+ * there are none of these, declaration errors under `noEmit` (or `withDeclarationDiagnostics`). With
152
+ * `declarationsLater`, the declaration errors are left to the caller (`declarationDiagnosticsDue`).
138
153
  */
139
154
  export declare function getDiagnosticsOfProgram(program: CompilerProgram, withDeclarationDiagnostics: boolean, declarationsLater?: boolean): Diagnostic[];
155
+ /**
156
+ * Whether `getDiagnosticsOfProgram` adds the declaration errors to `diagnostics`: under `noEmit` (or
157
+ * `withDeclarationDiagnostics`) with declarations, when only config errors were found.
158
+ */
159
+ export declare function declarationDiagnosticsDue(program: CompilerProgram, diagnostics: readonly Diagnostic[], withDeclarationDiagnostics: boolean): boolean;
140
160
  /** Combines emit results in order. */
141
161
  export declare function combineEmitResults(results: readonly EmitResult[]): EmitResult;
142
162
  export { CheckedProgram };
@@ -311,6 +311,18 @@ export class CompilerProgram {
311
311
  this.times = times;
312
312
  this.emitter = new ProgramEmitter(checked);
313
313
  }
314
+ /**
315
+ * Whether this run checked the program, which `getDiagnosticsOfProgram` sets when it checks it. A run
316
+ * stopped before checking, by syntax errors or `--noCheck`, keeps no record (`run-records.ts`).
317
+ */
318
+ checkedTheProgram = false;
319
+ /**
320
+ * The time spent in declaration emit while checking, to count as emit time rather than check time, since
321
+ * the last call. Only an incremental program emits while checking, to compute signatures.
322
+ */
323
+ takeNestedEmitTime() {
324
+ return 0;
325
+ }
314
326
  get program() {
315
327
  return this.checked.program;
316
328
  }
@@ -330,6 +342,14 @@ export class CompilerProgram {
330
342
  getGlobalDiagnostics(withCheckerThreads = true) {
331
343
  return this.checked.getGlobalDiagnostics(withCheckerThreads);
332
344
  }
345
+ /**
346
+ * Whether the global diagnostics found by checking are reported after the semantic diagnostics. An
347
+ * incremental program has them in the semantic diagnostics of the files they were found in
348
+ * (`CheckedProgram.globalsInFileDiagnostics`).
349
+ */
350
+ reportsGlobalDiagnosticsOfChecking() {
351
+ return !this.checked.globalsInFileDiagnostics;
352
+ }
333
353
  }
334
354
  /** Collects declaration emit errors without writing anything. */
335
355
  class DiscardingWriter extends OutputWriter {
@@ -363,11 +383,13 @@ export class PlainProgram extends CompilerProgram {
363
383
  }
364
384
  emit(writer) {
365
385
  const options = this.options;
366
- if (options.noEmit !== true) {
367
- const skipped = handleNoEmitOnError(this);
368
- if (skipped !== undefined)
369
- return skipped;
370
- }
386
+ // A `noEmit` program emits nothing, and its emit is not skipped (tsgo's `HandleNoEmitOptions`): its
387
+ // declaration errors come with its other diagnostics (`getDiagnosticsOfProgram`).
388
+ if (options.noEmit === true)
389
+ return new EmitResult();
390
+ const skipped = handleNoEmitOnError(this);
391
+ if (skipped !== undefined)
392
+ return skipped;
371
393
  const program = this.program;
372
394
  const files = program.getSourceFiles();
373
395
  const parallel = this.checked.emittedInParallel;
@@ -379,7 +401,8 @@ export class PlainProgram extends CompilerProgram {
379
401
  const emitted = parallel[i];
380
402
  // The declaration thread emitted the declarations of the files it could (parallel-emit.ts).
381
403
  const ahead = this.checked.declarationsEmittedAhead;
382
- const declarations = () => ahead?.[i] ?? this.emitter.emit([file], 2 /* EmitOnly.Dts */, writer);
404
+ // The file's JavaScript is emitted too, here or on an emit thread.
405
+ const declarations = () => ahead?.[i] ?? this.emitter.emit([file], 4 /* EmitOnly.DtsAfterJs */, writer);
383
406
  if (emitted === undefined)
384
407
  return ahead !== undefined
385
408
  ? combineEmitResults([this.emitter.emit([file], 1 /* EmitOnly.Js */, writer), declarations()])
@@ -390,14 +413,6 @@ export class PlainProgram extends CompilerProgram {
390
413
  return written;
391
414
  return combineEmitResults([written, declarations()]);
392
415
  }));
393
- if (options.noEmit === true) {
394
- // Emit is skipped only for files that would have been emitted.
395
- result.emitSkipped = files.some((file) => program.sourceFileMayBeEmitted(file, false));
396
- // Declaration emit still runs for its errors, as in tsgo, also when other errors were found.
397
- if (getEmitDeclarations(options) && options.noEmitOnError !== true)
398
- for (const d of this.getDeclarationDiagnostics())
399
- result.diagnostics.push(d);
400
- }
401
416
  return result;
402
417
  }
403
418
  }
@@ -415,10 +430,9 @@ export function handleNoEmitOnError(program) {
415
430
  return result;
416
431
  }
417
432
  /**
418
- * Config and syntax errors; without syntax errors, program, global and semantic errors too, and
419
- * declaration errors under `noEmit` (or `withDeclarationDiagnostics`). With `declarationsLater`, the
420
- * declaration errors are left to `program.emit`, which reports them under `noEmit` (without
421
- * `noEmitOnError`) whether or not other errors were found.
433
+ * Config and syntax errors; without syntax errors, program, global and semantic errors too, and, when
434
+ * there are none of these, declaration errors under `noEmit` (or `withDeclarationDiagnostics`). With
435
+ * `declarationsLater`, the declaration errors are left to the caller (`declarationDiagnosticsDue`).
422
436
  */
423
437
  export function getDiagnosticsOfProgram(program, withDeclarationDiagnostics, declarationsLater = false) {
424
438
  const result = [...program.getConfigFileParsingDiagnostics()];
@@ -438,25 +452,38 @@ export function getDiagnosticsOfProgram(program, withDeclarationDiagnostics, dec
438
452
  for (const d of program.getGlobalDiagnostics(false))
439
453
  result.push(d);
440
454
  if (result.length === configCount) {
455
+ // With `--noCheck` the checker skips every file: the run checked nothing to sample (`run-records.ts`).
456
+ if (options.noCheck !== true)
457
+ program.checkedTheProgram = true;
441
458
  const checkStart = performance.now();
442
459
  const semantic = program.getSemanticDiagnostics();
443
- program.times.checkTime = performance.now() - checkStart;
460
+ // Declaration emit that computed signatures while checking counts as emit time, as in TypeScript 7.1.
461
+ const nestedEmitTime = program.takeNestedEmitTime();
462
+ program.times.checkTime = Math.max(0, performance.now() - checkStart - nestedEmitTime);
463
+ program.times.emitTime += nestedEmitTime;
444
464
  for (const d of semantic)
445
465
  result.push(d);
446
466
  // Checking may have found more, such as missing global types.
447
- for (const d of program.getGlobalDiagnostics())
448
- result.push(d);
467
+ if (program.reportsGlobalDiagnosticsOfChecking())
468
+ for (const d of program.getGlobalDiagnostics())
469
+ result.push(d);
449
470
  mark('semantic diagnostics');
450
471
  }
451
- if (!declarationsLater &&
452
- (withDeclarationDiagnostics || options.noEmit === true) &&
453
- getEmitDeclarations(options) &&
454
- result.length === configCount) {
472
+ if (!declarationsLater && declarationDiagnosticsDue(program, result, withDeclarationDiagnostics))
455
473
  for (const d of program.getDeclarationDiagnostics())
456
474
  result.push(d);
457
- }
458
475
  return result;
459
476
  }
477
+ /**
478
+ * Whether `getDiagnosticsOfProgram` adds the declaration errors to `diagnostics`: under `noEmit` (or
479
+ * `withDeclarationDiagnostics`) with declarations, when only config errors were found.
480
+ */
481
+ export function declarationDiagnosticsDue(program, diagnostics, withDeclarationDiagnostics) {
482
+ const options = program.options;
483
+ return ((withDeclarationDiagnostics || options.noEmit === true) &&
484
+ getEmitDeclarations(options) &&
485
+ diagnostics.length === program.getConfigFileParsingDiagnostics().length);
486
+ }
460
487
  /** Combines emit results in order. */
461
488
  export function combineEmitResults(results) {
462
489
  const result = new EmitResult();