tsc-ts 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/README.md +2 -2
  2. package/bin/tsc-ts.js +70 -1
  3. package/dist/api/compiler/ast-utilities.d.ts +19 -1
  4. package/dist/api/compiler/ast-utilities.js +180 -95
  5. package/dist/api/compiler/ast.d.ts +22 -15
  6. package/dist/api/compiler/ast.js +1026 -995
  7. package/dist/api/compiler/astnav.js +15 -15
  8. package/dist/api/compiler/binder-utilities.js +186 -186
  9. package/dist/api/compiler/binder.js +290 -263
  10. package/dist/api/compiler/character-codes.js +2 -2
  11. package/dist/api/compiler/checker-calls.js +178 -124
  12. package/dist/api/compiler/checker-classes.d.ts +14 -3
  13. package/dist/api/compiler/checker-classes.js +134 -90
  14. package/dist/api/compiler/checker-contextual.js +64 -61
  15. package/dist/api/compiler/checker-declaration-order.js +79 -79
  16. package/dist/api/compiler/checker-declarations.d.ts +1 -0
  17. package/dist/api/compiler/checker-declarations.js +160 -136
  18. package/dist/api/compiler/checker-declared-types.js +67 -65
  19. package/dist/api/compiler/checker-decorators.js +77 -77
  20. package/dist/api/compiler/checker-deprecation.d.ts +8 -3
  21. package/dist/api/compiler/checker-deprecation.js +76 -55
  22. package/dist/api/compiler/checker-destructuring.js +47 -45
  23. package/dist/api/compiler/checker-elaboration.js +24 -24
  24. package/dist/api/compiler/checker-emit-helpers.js +4 -4
  25. package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
  26. package/dist/api/compiler/checker-emit-resolver.js +25 -13
  27. package/dist/api/compiler/checker-evaluator.js +9 -9
  28. package/dist/api/compiler/checker-expressions.js +244 -211
  29. package/dist/api/compiler/checker-functions.js +113 -107
  30. package/dist/api/compiler/checker-generated-code.d.ts +0 -11
  31. package/dist/api/compiler/checker-generated-code.js +28 -52
  32. package/dist/api/compiler/checker-grammar.d.ts +1 -0
  33. package/dist/api/compiler/checker-grammar.js +472 -440
  34. package/dist/api/compiler/checker-heritage.js +91 -93
  35. package/dist/api/compiler/checker-inference.d.ts +77 -5
  36. package/dist/api/compiler/checker-inference.js +487 -107
  37. package/dist/api/compiler/checker-iteration.d.ts +0 -10
  38. package/dist/api/compiler/checker-iteration.js +35 -52
  39. package/dist/api/compiler/checker-javascript.js +14 -14
  40. package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
  41. package/dist/api/compiler/checker-jsdoc.js +67 -58
  42. package/dist/api/compiler/checker-jsx.js +105 -88
  43. package/dist/api/compiler/checker-members.d.ts +9 -2
  44. package/dist/api/compiler/checker-members.js +212 -75
  45. package/dist/api/compiler/checker-modules.d.ts +15 -6
  46. package/dist/api/compiler/checker-modules.js +469 -309
  47. package/dist/api/compiler/checker-narrowing.js +273 -189
  48. package/dist/api/compiler/checker-object-literals.js +25 -22
  49. package/dist/api/compiler/checker-operators.js +126 -118
  50. package/dist/api/compiler/checker-overloads.js +27 -27
  51. package/dist/api/compiler/checker-property-access.js +59 -55
  52. package/dist/api/compiler/checker-services.d.ts +1 -0
  53. package/dist/api/compiler/checker-services.js +222 -210
  54. package/dist/api/compiler/checker-signatures.js +65 -49
  55. package/dist/api/compiler/checker-source-file.d.ts +5 -0
  56. package/dist/api/compiler/checker-source-file.js +154 -130
  57. package/dist/api/compiler/checker-statements.js +33 -32
  58. package/dist/api/compiler/checker-super.js +50 -50
  59. package/dist/api/compiler/checker-symbol-types.js +109 -93
  60. package/dist/api/compiler/checker-symbols.d.ts +13 -1
  61. package/dist/api/compiler/checker-symbols.js +264 -149
  62. package/dist/api/compiler/checker-type-factory.d.ts +5 -0
  63. package/dist/api/compiler/checker-type-factory.js +145 -36
  64. package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
  65. package/dist/api/compiler/checker-type-nodes.js +179 -141
  66. package/dist/api/compiler/checker-type-operators.d.ts +2 -0
  67. package/dist/api/compiler/checker-type-operators.js +110 -63
  68. package/dist/api/compiler/checker-types.d.ts +80 -3
  69. package/dist/api/compiler/checker-types.js +121 -2
  70. package/dist/api/compiler/checker-unused.js +114 -118
  71. package/dist/api/compiler/checker-utilities.js +11 -11
  72. package/dist/api/compiler/checker.d.ts +104 -31
  73. package/dist/api/compiler/checker.js +181 -33
  74. package/dist/api/compiler/command-line.d.ts +1 -3
  75. package/dist/api/compiler/command-line.js +47 -44
  76. package/dist/api/compiler/compile-program.d.ts +42 -3
  77. package/dist/api/compiler/compile-program.js +139 -27
  78. package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
  79. package/dist/api/compiler/diagnostic-messages.js +128 -122
  80. package/dist/api/compiler/diagnostics.d.ts +22 -0
  81. package/dist/api/compiler/diagnostics.js +93 -11
  82. package/dist/api/compiler/emitter.d.ts +7 -1
  83. package/dist/api/compiler/emitter.js +53 -11
  84. package/dist/api/compiler/file-include.d.ts +2 -1
  85. package/dist/api/compiler/file-include.js +11 -7
  86. package/dist/api/compiler/file-loader.d.ts +21 -1
  87. package/dist/api/compiler/file-loader.js +201 -48
  88. package/dist/api/compiler/instantiation.d.ts +7 -0
  89. package/dist/api/compiler/instantiation.js +101 -49
  90. package/dist/api/compiler/jsdoc.js +23 -23
  91. package/dist/api/compiler/link-tables.d.ts +48 -18
  92. package/dist/api/compiler/link-tables.js +80 -37
  93. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  94. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  95. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  96. package/dist/api/compiler/locales/de-DE.js +1 -1
  97. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  98. package/dist/api/compiler/locales/es-ES.js +1 -1
  99. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  100. package/dist/api/compiler/locales/fr-FR.js +1 -1
  101. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  102. package/dist/api/compiler/locales/it-IT.js +1 -1
  103. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  104. package/dist/api/compiler/locales/ja-JP.js +1 -1
  105. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  106. package/dist/api/compiler/locales/ko-KR.js +1 -1
  107. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  108. package/dist/api/compiler/locales/pl-PL.js +1 -1
  109. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  110. package/dist/api/compiler/locales/pt-BR.js +1 -1
  111. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  112. package/dist/api/compiler/locales/ru-RU.js +1 -1
  113. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  114. package/dist/api/compiler/locales/tr-TR.js +1 -1
  115. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  116. package/dist/api/compiler/locales/zh-CN.js +1 -1
  117. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  118. package/dist/api/compiler/locales/zh-TW.js +1 -1
  119. package/dist/api/compiler/module-resolution-types.js +6 -6
  120. package/dist/api/compiler/module-resolution.d.ts +10 -1
  121. package/dist/api/compiler/module-resolution.js +115 -84
  122. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  123. package/dist/api/compiler/module-specifiers.js +24 -18
  124. package/dist/api/compiler/name-resolver.js +74 -65
  125. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  126. package/dist/api/compiler/node-builder-names.js +210 -90
  127. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  128. package/dist/api/compiler/node-builder-reuse.js +23 -22
  129. package/dist/api/compiler/node-builder.d.ts +18 -1
  130. package/dist/api/compiler/node-builder.js +191 -102
  131. package/dist/api/compiler/option-declarations.d.ts +2 -6
  132. package/dist/api/compiler/option-declarations.js +315 -375
  133. package/dist/api/compiler/options.d.ts +15 -33
  134. package/dist/api/compiler/options.js +21 -54
  135. package/dist/api/compiler/output-paths.d.ts +4 -1
  136. package/dist/api/compiler/output-paths.js +6 -11
  137. package/dist/api/compiler/package-json.d.ts +3 -3
  138. package/dist/api/compiler/package-json.js +11 -10
  139. package/dist/api/compiler/parallel-parse.d.ts +3 -2
  140. package/dist/api/compiler/parallel-parse.js +17 -5
  141. package/dist/api/compiler/parser.d.ts +40 -19
  142. package/dist/api/compiler/parser.js +308 -216
  143. package/dist/api/compiler/path.d.ts +9 -0
  144. package/dist/api/compiler/path.js +20 -3
  145. package/dist/api/compiler/printer/emit-context.d.ts +5 -1
  146. package/dist/api/compiler/printer/emit-context.js +20 -1
  147. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  148. package/dist/api/compiler/printer/factory-base.js +7 -3
  149. package/dist/api/compiler/printer/factory.js +3 -1
  150. package/dist/api/compiler/printer/helpers.js +10 -1
  151. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  152. package/dist/api/compiler/printer/name-generator.js +35 -16
  153. package/dist/api/compiler/printer/printer.d.ts +49 -2
  154. package/dist/api/compiler/printer/printer.js +539 -293
  155. package/dist/api/compiler/printer/utilities.js +149 -147
  156. package/dist/api/compiler/program-checker.d.ts +12 -2
  157. package/dist/api/compiler/program-checker.js +88 -34
  158. package/dist/api/compiler/program-utilities.d.ts +3 -1
  159. package/dist/api/compiler/program-utilities.js +28 -15
  160. package/dist/api/compiler/program.d.ts +4 -6
  161. package/dist/api/compiler/program.js +74 -87
  162. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  163. package/dist/api/compiler/pseudo-bigint.js +18 -0
  164. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  165. package/dist/api/compiler/regexp-checker.js +93 -76
  166. package/dist/api/compiler/relations.d.ts +27 -4
  167. package/dist/api/compiler/relations.js +347 -180
  168. package/dist/api/compiler/reparser.js +60 -56
  169. package/dist/api/compiler/scanner.d.ts +19 -2
  170. package/dist/api/compiler/scanner.js +123 -108
  171. package/dist/api/compiler/shared-results.d.ts +463 -0
  172. package/dist/api/compiler/shared-results.js +2128 -0
  173. package/dist/api/compiler/sourcemap.js +2 -2
  174. package/dist/api/compiler/symbol-accessibility.js +87 -74
  175. package/dist/api/compiler/symbol.d.ts +23 -14
  176. package/dist/api/compiler/symbol.js +23 -11
  177. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  178. package/dist/api/compiler/transformers/alias-references.js +247 -139
  179. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  180. package/dist/api/compiler/transformers/async.d.ts +0 -1
  181. package/dist/api/compiler/transformers/async.js +64 -77
  182. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  183. package/dist/api/compiler/transformers/class-fields.js +81 -78
  184. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  185. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  186. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  187. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  188. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  189. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  190. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  191. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  192. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  193. package/dist/api/compiler/transformers/declarations.js +305 -238
  194. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  195. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  196. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  197. package/dist/api/compiler/transformers/destructuring.js +19 -18
  198. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  199. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  200. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  201. package/dist/api/compiler/transformers/for-await.js +25 -25
  202. package/dist/api/compiler/transformers/import-elision.js +14 -14
  203. package/dist/api/compiler/transformers/jsx.js +12 -12
  204. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  205. package/dist/api/compiler/transformers/module.js +8 -8
  206. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  207. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  208. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  209. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  210. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  211. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  212. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  213. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  214. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  215. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  216. package/dist/api/compiler/transformers/using.js +12 -12
  217. package/dist/api/compiler/transformers/utilities.js +77 -77
  218. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  219. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  220. package/dist/api/compiler/tsconfig.d.ts +10 -2
  221. package/dist/api/compiler/tsconfig.js +136 -48
  222. package/dist/api/compiler/type-printer.js +40 -3
  223. package/dist/api/compiler/types.d.ts +2 -1
  224. package/dist/api/library/ast.generated.d.ts +42 -39
  225. package/dist/api/library/ast.generated.js +1 -1
  226. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  227. package/dist/api/library/compiler-options.generated.js +1 -1
  228. package/dist/api/library/disk.js +12 -1
  229. package/dist/api/library/enums.generated.d.ts +206 -206
  230. package/dist/api/library/enums.generated.js +206 -206
  231. package/dist/api/library/nodes.js +26 -26
  232. package/package.json +9 -9
  233. package/src/compiler/ast-utilities.ts +99 -7
  234. package/src/compiler/ast.ts +58 -26
  235. package/src/compiler/binder.ts +39 -4
  236. package/src/compiler/character-codes.ts +2 -2
  237. package/src/compiler/checker-calls.ts +79 -9
  238. package/src/compiler/checker-classes.ts +78 -24
  239. package/src/compiler/checker-contextual.ts +6 -1
  240. package/src/compiler/checker-declarations.ts +31 -4
  241. package/src/compiler/checker-declared-types.ts +8 -5
  242. package/src/compiler/checker-decorators.ts +1 -1
  243. package/src/compiler/checker-deprecation.ts +29 -8
  244. package/src/compiler/checker-destructuring.ts +10 -3
  245. package/src/compiler/checker-emit-helpers.ts +1 -0
  246. package/src/compiler/checker-emit-resolver.ts +16 -6
  247. package/src/compiler/checker-expressions.ts +79 -46
  248. package/src/compiler/checker-functions.ts +21 -6
  249. package/src/compiler/checker-generated-code.ts +2 -22
  250. package/src/compiler/checker-grammar.ts +136 -62
  251. package/src/compiler/checker-heritage.ts +22 -21
  252. package/src/compiler/checker-inference.ts +514 -82
  253. package/src/compiler/checker-iteration.ts +18 -31
  254. package/src/compiler/checker-javascript.ts +1 -1
  255. package/src/compiler/checker-jsdoc.ts +50 -27
  256. package/src/compiler/checker-jsx.ts +26 -4
  257. package/src/compiler/checker-members.ts +200 -56
  258. package/src/compiler/checker-modules.ts +332 -65
  259. package/src/compiler/checker-narrowing.ts +98 -19
  260. package/src/compiler/checker-object-literals.ts +3 -0
  261. package/src/compiler/checker-operators.ts +11 -4
  262. package/src/compiler/checker-property-access.ts +7 -2
  263. package/src/compiler/checker-services.ts +39 -12
  264. package/src/compiler/checker-signatures.ts +15 -1
  265. package/src/compiler/checker-source-file.ts +39 -13
  266. package/src/compiler/checker-statements.ts +3 -2
  267. package/src/compiler/checker-symbol-types.ts +29 -6
  268. package/src/compiler/checker-symbols.ts +158 -15
  269. package/src/compiler/checker-type-factory.ts +124 -23
  270. package/src/compiler/checker-type-nodes.ts +46 -3
  271. package/src/compiler/checker-type-operators.ts +83 -26
  272. package/src/compiler/checker-types.ts +147 -4
  273. package/src/compiler/checker-unused.ts +9 -14
  274. package/src/compiler/checker.ts +203 -39
  275. package/src/compiler/command-line.ts +28 -28
  276. package/src/compiler/compile-program.ts +167 -27
  277. package/src/compiler/decoder.ts +13 -4
  278. package/src/compiler/diagnostic-messages.ts +1973 -1892
  279. package/src/compiler/diagnostics.ts +84 -3
  280. package/src/compiler/emitter.ts +57 -8
  281. package/src/compiler/encoder.ts +23 -8
  282. package/src/compiler/file-include.ts +9 -3
  283. package/src/compiler/file-loader.ts +197 -38
  284. package/src/compiler/help.ts +10 -14
  285. package/src/compiler/incremental.ts +165 -30
  286. package/src/compiler/init.ts +2 -7
  287. package/src/compiler/instantiation.ts +77 -22
  288. package/src/compiler/jsdoc.ts +3 -1
  289. package/src/compiler/link-tables.ts +82 -37
  290. package/src/compiler/locales/cs-CZ.ts +1 -1
  291. package/src/compiler/locales/de-DE.ts +1 -1
  292. package/src/compiler/locales/es-ES.ts +1 -1
  293. package/src/compiler/locales/fr-FR.ts +1 -1
  294. package/src/compiler/locales/it-IT.ts +1 -1
  295. package/src/compiler/locales/ja-JP.ts +1 -1
  296. package/src/compiler/locales/ko-KR.ts +1 -1
  297. package/src/compiler/locales/pl-PL.ts +1 -1
  298. package/src/compiler/locales/pt-BR.ts +1 -1
  299. package/src/compiler/locales/ru-RU.ts +1 -1
  300. package/src/compiler/locales/tr-TR.ts +1 -1
  301. package/src/compiler/locales/zh-CN.ts +1 -1
  302. package/src/compiler/locales/zh-TW.ts +1 -1
  303. package/src/compiler/module-resolution.ts +44 -8
  304. package/src/compiler/module-specifiers.ts +62 -20
  305. package/src/compiler/name-resolver.ts +9 -1
  306. package/src/compiler/node-builder-names.ts +236 -54
  307. package/src/compiler/node-builder-pseudo.ts +4 -7
  308. package/src/compiler/node-builder-reuse.ts +5 -4
  309. package/src/compiler/node-builder.ts +130 -31
  310. package/src/compiler/option-declarations.ts +33 -103
  311. package/src/compiler/options.ts +23 -62
  312. package/src/compiler/output-paths.ts +5 -18
  313. package/src/compiler/package-entrypoints.ts +345 -0
  314. package/src/compiler/package-json.ts +4 -4
  315. package/src/compiler/parallel-check.ts +326 -52
  316. package/src/compiler/parallel-emit.ts +320 -0
  317. package/src/compiler/parallel-parse.ts +16 -5
  318. package/src/compiler/parse-thread.ts +3 -0
  319. package/src/compiler/parser.ts +156 -39
  320. package/src/compiler/path.ts +22 -2
  321. package/src/compiler/printer/emit-context.ts +21 -0
  322. package/src/compiler/printer/factory-base.ts +10 -3
  323. package/src/compiler/printer/factory.ts +4 -1
  324. package/src/compiler/printer/helpers.ts +10 -1
  325. package/src/compiler/printer/name-generator.ts +24 -2
  326. package/src/compiler/printer/printer.ts +266 -30
  327. package/src/compiler/printer/utilities.ts +8 -2
  328. package/src/compiler/program-checker.ts +57 -5
  329. package/src/compiler/program-utilities.ts +23 -10
  330. package/src/compiler/program.ts +18 -26
  331. package/src/compiler/pseudo-bigint.ts +17 -0
  332. package/src/compiler/regexp-checker.ts +63 -30
  333. package/src/compiler/relations.ts +240 -77
  334. package/src/compiler/reparser.ts +7 -2
  335. package/src/compiler/scanner.ts +109 -79
  336. package/src/compiler/shared-results.ts +2414 -0
  337. package/src/compiler/show-config.ts +18 -1
  338. package/src/compiler/sourcemap.ts +2 -2
  339. package/src/compiler/symbol-accessibility.ts +26 -3
  340. package/src/compiler/symbol.ts +46 -24
  341. package/src/compiler/syntax-kind.ts +188 -187
  342. package/src/compiler/thread-entry.ts +64 -4
  343. package/src/compiler/transformers/alias-references.ts +123 -4
  344. package/src/compiler/transformers/async.ts +2 -17
  345. package/src/compiler/transformers/class-fields.ts +13 -12
  346. package/src/compiler/transformers/commonjs-module.ts +11 -7
  347. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  348. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  349. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  350. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  351. package/src/compiler/transformers/declarations.ts +134 -48
  352. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  353. package/src/compiler/transformers/destructuring.ts +4 -3
  354. package/src/compiler/transformers/external-module-info.ts +1 -1
  355. package/src/compiler/transformers/jsx.ts +2 -1
  356. package/src/compiler/transformers/reference-resolver.ts +83 -19
  357. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  358. package/src/compiler/transformers/syntax-facts.ts +2 -7
  359. package/src/compiler/transformers/type-eraser.ts +10 -1
  360. package/src/compiler/transformers/type-serialization.ts +3 -2
  361. package/src/compiler/transformers/visitor-base.ts +2 -1
  362. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  363. package/src/compiler/tsc-build.ts +66 -9
  364. package/src/compiler/tsc-cli.ts +7 -0
  365. package/src/compiler/tsc-compile.ts +284 -4
  366. package/src/compiler/tsc-watch.ts +74 -45
  367. package/src/compiler/tsconfig.ts +176 -19
  368. package/src/compiler/type-printer.ts +36 -2
  369. package/src/compiler/types.ts +2 -1
  370. package/src/library/ast.generated.ts +57 -41
  371. package/src/library/compiler-options.generated.ts +117 -103
  372. package/src/library/disk.ts +10 -1
  373. package/src/library/enums.generated.ts +196 -196
@@ -98,7 +98,7 @@ export function getInferenceContext(c, node) {
98
98
  }
99
99
  /** The node a contextual type for `node` is pushed onto: an element for its attributes, which spans its children. */
100
100
  function getContextNode(node) {
101
- if (node.kind === 293 /* SyntaxKind.JsxAttributes */ && node.parent.kind !== 286 /* SyntaxKind.JsxSelfClosingElement */)
101
+ if (node.kind === 294 /* SyntaxKind.JsxAttributes */ && node.parent.kind !== 287 /* SyntaxKind.JsxSelfClosingElement */)
102
102
  return node.parent.parent;
103
103
  return node;
104
104
  }
@@ -175,56 +175,56 @@ export function getContextualTypeEx(c, node, contextFlags) {
175
175
  if (parent === undefined)
176
176
  return undefined;
177
177
  switch (parent.kind) {
178
- case 261 /* SyntaxKind.VariableDeclaration */:
179
- case 170 /* SyntaxKind.Parameter */:
180
- case 173 /* SyntaxKind.PropertyDeclaration */:
181
- case 172 /* SyntaxKind.PropertySignature */:
182
- case 209 /* SyntaxKind.BindingElement */:
178
+ case 262 /* SyntaxKind.VariableDeclaration */:
179
+ case 171 /* SyntaxKind.Parameter */:
180
+ case 174 /* SyntaxKind.PropertyDeclaration */:
181
+ case 173 /* SyntaxKind.PropertySignature */:
182
+ case 210 /* SyntaxKind.BindingElement */:
183
183
  if (getInitializer(parent) !== node)
184
184
  return undefined;
185
185
  return getContextualTypeForInitializerExpression(c, parent, contextFlags);
186
- case 220 /* SyntaxKind.ArrowFunction */:
187
- case 254 /* SyntaxKind.ReturnStatement */:
186
+ case 221 /* SyntaxKind.ArrowFunction */:
187
+ case 255 /* SyntaxKind.ReturnStatement */:
188
188
  return getContextualTypeForReturnExpression(c, node);
189
- case 230 /* SyntaxKind.YieldExpression */:
189
+ case 231 /* SyntaxKind.YieldExpression */:
190
190
  return getContextualTypeForYieldOperand(c, parent, contextFlags);
191
- case 224 /* SyntaxKind.AwaitExpression */:
191
+ case 225 /* SyntaxKind.AwaitExpression */:
192
192
  return getContextualTypeForAwaitOperand(c, parent, contextFlags);
193
- case 214 /* SyntaxKind.CallExpression */:
194
- case 215 /* SyntaxKind.NewExpression */:
193
+ case 215 /* SyntaxKind.CallExpression */:
194
+ case 216 /* SyntaxKind.NewExpression */:
195
195
  return getContextualTypeForArgument(c, parent, node);
196
- case 171 /* SyntaxKind.Decorator */: {
196
+ case 172 /* SyntaxKind.Decorator */: {
197
197
  // A decorator expression is contextually typed by the call the runtime makes.
198
198
  const signature = getDecoratorCallSignature(c, parent);
199
199
  return signature !== undefined ? getOrCreateTypeFromSignature(c, signature) : undefined;
200
200
  }
201
- case 235 /* SyntaxKind.AsExpression */:
202
- case 217 /* SyntaxKind.TypeAssertionExpression */: {
201
+ case 236 /* SyntaxKind.AsExpression */:
202
+ case 218 /* SyntaxKind.TypeAssertionExpression */: {
203
203
  const typeNode = getType(parent);
204
204
  return isConstTypeReference(typeNode)
205
205
  ? getContextualTypeEx(c, parent, contextFlags)
206
206
  : getTypeFromTypeNode(c, typeNode);
207
207
  }
208
- case 239 /* SyntaxKind.SatisfiesExpression */:
208
+ case 240 /* SyntaxKind.SatisfiesExpression */:
209
209
  return getTypeFromTypeNode(c, getType(parent));
210
- case 278 /* SyntaxKind.ExportAssignment */: {
210
+ case 279 /* SyntaxKind.ExportAssignment */: {
211
211
  // A JSDoc `@type` on `export default`.
212
212
  const typeNode = getType(parent);
213
213
  return typeNode !== undefined ? getTypeFromTypeNode(c, typeNode) : undefined;
214
214
  }
215
- case 227 /* SyntaxKind.BinaryExpression */:
215
+ case 228 /* SyntaxKind.BinaryExpression */:
216
216
  return getContextualTypeForBinaryOperand(c, parent, node, contextFlags);
217
- case 303 /* SyntaxKind.PropertyAssignment */:
218
- case 304 /* SyntaxKind.ShorthandPropertyAssignment */:
217
+ case 304 /* SyntaxKind.PropertyAssignment */:
218
+ case 305 /* SyntaxKind.ShorthandPropertyAssignment */:
219
219
  // The property's name gets the property's contextual type too.
220
220
  return getContextualTypeForObjectLiteralElement(c, parent, contextFlags);
221
- case 211 /* SyntaxKind.ObjectLiteralExpression */:
222
- return node.kind === 175 /* SyntaxKind.MethodDeclaration */
221
+ case 212 /* SyntaxKind.ObjectLiteralExpression */:
222
+ return node.kind === 176 /* SyntaxKind.MethodDeclaration */
223
223
  ? getContextualTypeForObjectLiteralElement(c, node, contextFlags)
224
224
  : undefined;
225
- case 305 /* SyntaxKind.SpreadAssignment */:
225
+ case 306 /* SyntaxKind.SpreadAssignment */:
226
226
  return getContextualTypeEx(c, parent.parent, contextFlags);
227
- case 210 /* SyntaxKind.ArrayLiteralExpression */: {
227
+ case 211 /* SyntaxKind.ArrayLiteralExpression */: {
228
228
  const elements = parent.elements.nodes;
229
229
  const index = indexOfNode(elements, node);
230
230
  if (index < 0)
@@ -232,28 +232,28 @@ export function getContextualTypeEx(c, node, contextFlags) {
232
232
  const spreads = getSpreadIndices(c, parent, elements);
233
233
  return getContextualTypeForElementExpression(c, getApparentTypeOfContextualTypeEx(c, parent, contextFlags), index, elements.length, spreads.first, spreads.last);
234
234
  }
235
- case 228 /* SyntaxKind.ConditionalExpression */: {
235
+ case 229 /* SyntaxKind.ConditionalExpression */: {
236
236
  const cond = parent;
237
237
  return node === cond.whenTrue || node === cond.whenFalse
238
238
  ? getContextualTypeEx(c, parent, contextFlags)
239
239
  : undefined;
240
240
  }
241
- case 240 /* SyntaxKind.TemplateSpan */: {
241
+ case 241 /* SyntaxKind.TemplateSpan */: {
242
242
  const template = parent.parent;
243
- return template.parent !== undefined && template.parent.kind === 216 /* SyntaxKind.TaggedTemplateExpression */
243
+ return template.parent !== undefined && template.parent.kind === 217 /* SyntaxKind.TaggedTemplateExpression */
244
244
  ? getContextualTypeForArgument(c, template.parent, node)
245
245
  : undefined;
246
246
  }
247
- case 218 /* SyntaxKind.ParenthesizedExpression */:
248
- case 236 /* SyntaxKind.NonNullExpression */:
247
+ case 219 /* SyntaxKind.ParenthesizedExpression */:
248
+ case 237 /* SyntaxKind.NonNullExpression */:
249
249
  return getContextualTypeEx(c, parent, contextFlags);
250
- case 295 /* SyntaxKind.JsxExpression */:
250
+ case 296 /* SyntaxKind.JsxExpression */:
251
251
  return getContextualTypeForJsxExpression(c, parent, contextFlags);
252
- case 292 /* SyntaxKind.JsxAttribute */:
253
- case 294 /* SyntaxKind.JsxSpreadAttribute */:
252
+ case 293 /* SyntaxKind.JsxAttribute */:
253
+ case 295 /* SyntaxKind.JsxSpreadAttribute */:
254
254
  return getContextualTypeForJsxAttribute(c, parent, contextFlags);
255
- case 287 /* SyntaxKind.JsxOpeningElement */:
256
- case 286 /* SyntaxKind.JsxSelfClosingElement */:
255
+ case 288 /* SyntaxKind.JsxOpeningElement */:
256
+ case 287 /* SyntaxKind.JsxSelfClosingElement */:
257
257
  return getContextualJsxElementAttributesType(c, parent, contextFlags);
258
258
  }
259
259
  return undefined;
@@ -266,7 +266,7 @@ function getContextualTypeForInitializerExpression(c, declaration, contextFlags)
266
266
  const name = getName(declaration);
267
267
  if ((contextFlags & 8 /* ContextFlags.SkipBindingPatterns */) === 0 &&
268
268
  name !== undefined &&
269
- (name.kind === 207 /* SyntaxKind.ObjectBindingPattern */ || name.kind === 208 /* SyntaxKind.ArrayBindingPattern */) &&
269
+ (name.kind === 208 /* SyntaxKind.ObjectBindingPattern */ || name.kind === 209 /* SyntaxKind.ArrayBindingPattern */) &&
270
270
  getElements(name).nodes.length > 0)
271
271
  return getTypeFromBindingPattern(c, name, true, false);
272
272
  return undefined;
@@ -275,17 +275,20 @@ function getContextualTypeForInitializer(c, declaration, contextFlags) {
275
275
  const typeNode = getType(declaration);
276
276
  if (typeNode !== undefined)
277
277
  return getTypeFromTypeNode(c, typeNode);
278
- if (declaration.kind === 170 /* SyntaxKind.Parameter */)
278
+ if (declaration.kind === 171 /* SyntaxKind.Parameter */)
279
279
  return getContextuallyTypedParameterTypeOrUndefined(c, declaration);
280
- if (declaration.kind === 209 /* SyntaxKind.BindingElement */)
280
+ if (declaration.kind === 210 /* SyntaxKind.BindingElement */)
281
281
  return getContextualTypeForBindingElement(c, declaration);
282
282
  // A static property of a class expression takes the type of the same property of the class's contextual type.
283
- if (declaration.kind === 173 /* SyntaxKind.PropertyDeclaration */ &&
283
+ if (declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ &&
284
284
  isStatic(declaration) &&
285
- declaration.parent.kind === 232 /* SyntaxKind.ClassExpression */) {
285
+ declaration.parent.kind === 233 /* SyntaxKind.ClassExpression */) {
286
286
  const parentType = getContextualTypeEx(c, declaration.parent, contextFlags);
287
287
  const symbol = getSymbolOfDeclaration(c, declaration);
288
- if (parentType !== undefined && symbol !== undefined)
288
+ // The class's own type might still be in progress, so contextually typing by it would report a spurious circularity.
289
+ if (parentType !== undefined &&
290
+ symbol !== undefined &&
291
+ parentType.symbol !== getSymbolOfDeclaration(c, declaration.parent))
289
292
  return getTypeOfPropertyOfContextualType(c, parentType, symbol.name);
290
293
  }
291
294
  return undefined;
@@ -295,18 +298,18 @@ function getContextualTypeForBindingElement(c, declaration) {
295
298
  const element = declaration;
296
299
  const name = element.propertyName ?? element.name;
297
300
  if (name === undefined ||
298
- name.kind === 207 /* SyntaxKind.ObjectBindingPattern */ ||
299
- name.kind === 208 /* SyntaxKind.ArrayBindingPattern */ ||
300
- (name.kind === 168 /* SyntaxKind.ComputedPropertyName */ && !isLiteralComputedName(name)))
301
+ name.kind === 208 /* SyntaxKind.ObjectBindingPattern */ ||
302
+ name.kind === 209 /* SyntaxKind.ArrayBindingPattern */ ||
303
+ (name.kind === 169 /* SyntaxKind.ComputedPropertyName */ && !isLiteralComputedName(name)))
301
304
  return undefined;
302
305
  const parent = declaration.parent.parent;
303
306
  let parentType = getContextualTypeForInitializer(c, parent, 0 /* ContextFlags.None */);
304
- if (parentType === undefined && parent.kind !== 209 /* SyntaxKind.BindingElement */ && getInitializer(parent) !== undefined)
307
+ if (parentType === undefined && parent.kind !== 210 /* SyntaxKind.BindingElement */ && getInitializer(parent) !== undefined)
305
308
  parentType = checkDeclarationInitializer(c, parent, element.dotDotDotToken !== undefined ? 32 /* CheckMode.RestBindingElement */ : 0 /* CheckMode.Normal */);
306
309
  if (parentType === undefined)
307
310
  return undefined;
308
311
  const parentName = getName(parent);
309
- if (parentName.kind === 208 /* SyntaxKind.ArrayBindingPattern */) {
312
+ if (parentName.kind === 209 /* SyntaxKind.ArrayBindingPattern */) {
310
313
  const index = getElements(parentName).nodes.indexOf(declaration);
311
314
  if (index < 0)
312
315
  return undefined;
@@ -498,7 +501,7 @@ function getSpreadIndices(c, node, elements) {
498
501
  let first = -1;
499
502
  let last = -1;
500
503
  for (let i = 0; i < elements.length; i++)
501
- if (elements[i].kind === 231 /* SyntaxKind.SpreadElement */) {
504
+ if (elements[i].kind === 232 /* SyntaxKind.SpreadElement */) {
502
505
  if (first < 0)
503
506
  first = i;
504
507
  last = i;
@@ -524,7 +527,7 @@ function getContextualTypeForObjectLiteralElement(c, element, contextFlags) {
524
527
  let nameType = symbol !== undefined ? c.symbolNameTypes.get(getSymbolId(symbol)) : undefined;
525
528
  // Late-bound members are named by the type of their computed name, like a unique symbol.
526
529
  const nameNode = getName(element);
527
- if (nameType === undefined && nameNode.kind === 168 /* SyntaxKind.ComputedPropertyName */)
530
+ if (nameType === undefined && nameNode.kind === 169 /* SyntaxKind.ComputedPropertyName */)
528
531
  nameType = checkComputedPropertyName(c, nameNode);
529
532
  return getTypeOfPropertyOfContextualTypeEx(c, t, name, nameType);
530
533
  }
@@ -629,7 +632,7 @@ function getTypeOfConcretePropertyOfContextualType(c, t, name) {
629
632
  }
630
633
  /** Whether the type of a mapped type property is being resolved. */
631
634
  function isCircularMappedProperty(c, symbol) {
632
- return ((symbol.checkFlags & 262144 /* CheckFlags.Mapped */) !== 0 &&
635
+ return ((symbol.checkFlags & 2097152 /* CheckFlags.Mapped */) !== 0 &&
633
636
  c.symbolTypes.get(getSymbolId(symbol)) === undefined &&
634
637
  findResolutionCycleStartIndex(c, symbol, 0 /* TypeSystemPropertyName.Type */) >= 0);
635
638
  }
@@ -697,9 +700,9 @@ export function getApparentTypeOfContextualTypeEx(c, node, contextFlags) {
697
700
  : mapTypeEx(c, t, (u) => ((u.objectFlags & 32 /* ObjectFlags.Mapped */) !== 0 ? u : getApparentType(c, u)), true);
698
701
  if (apparentType === undefined)
699
702
  return undefined;
700
- if ((apparentType.flags & 134217728 /* TypeFlags.Union */) !== 0 && node.kind === 211 /* SyntaxKind.ObjectLiteralExpression */)
703
+ if ((apparentType.flags & 134217728 /* TypeFlags.Union */) !== 0 && node.kind === 212 /* SyntaxKind.ObjectLiteralExpression */)
701
704
  return discriminateContextualTypeByObjectMembers(c, node, apparentType);
702
- if ((apparentType.flags & 134217728 /* TypeFlags.Union */) !== 0 && node.kind === 293 /* SyntaxKind.JsxAttributes */)
705
+ if ((apparentType.flags & 134217728 /* TypeFlags.Union */) !== 0 && node.kind === 294 /* SyntaxKind.JsxAttributes */)
703
706
  return discriminateContextualTypeByJSXAttributes(c, node, apparentType);
704
707
  return apparentType;
705
708
  }
@@ -732,10 +735,10 @@ function discriminateContextualTypeByObjectMembers(c, node, contextualType) {
732
735
  const symbol = getSymbol(p);
733
736
  if (symbol === undefined)
734
737
  continue;
735
- if ((p.kind === 303 /* SyntaxKind.PropertyAssignment */ &&
738
+ if ((p.kind === 304 /* SyntaxKind.PropertyAssignment */ &&
736
739
  isPossiblyDiscriminantValue(p.initializer) &&
737
740
  isDiscriminantProperty(c, contextualType, symbol.name)) ||
738
- (p.kind === 304 /* SyntaxKind.ShorthandPropertyAssignment */ && isDiscriminantProperty(c, contextualType, symbol.name)))
741
+ (p.kind === 305 /* SyntaxKind.ShorthandPropertyAssignment */ && isDiscriminantProperty(c, contextualType, symbol.name)))
739
742
  props.push(p);
740
743
  }
741
744
  const nodeSymbol = getSymbol(node);
@@ -789,7 +792,7 @@ function getMatchingUnionConstituentForObjectLiteral(c, unionType, node) {
789
792
  for (const p of getProperties(node).nodes) {
790
793
  const symbol = getSymbol(p);
791
794
  if (symbol !== undefined &&
792
- p.kind === 303 /* SyntaxKind.PropertyAssignment */ &&
795
+ p.kind === 304 /* SyntaxKind.PropertyAssignment */ &&
793
796
  symbol.name === keyPropertyName &&
794
797
  isPossiblyDiscriminantValue(p.initializer)) {
795
798
  propNode = p;
@@ -807,17 +810,17 @@ function isPossiblyDiscriminantValue(node) {
807
810
  case 8 /* SyntaxKind.NumericLiteral */:
808
811
  case 9 /* SyntaxKind.BigIntLiteral */:
809
812
  case 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */:
810
- case 229 /* SyntaxKind.TemplateExpression */:
813
+ case 230 /* SyntaxKind.TemplateExpression */:
811
814
  case 111 /* SyntaxKind.TrueKeyword */:
812
815
  case 96 /* SyntaxKind.FalseKeyword */:
813
816
  case 105 /* SyntaxKind.NullKeyword */:
814
817
  case 79 /* SyntaxKind.Identifier */:
815
818
  case 157 /* SyntaxKind.UndefinedKeyword */:
816
819
  return true;
817
- case 212 /* SyntaxKind.PropertyAccessExpression */:
818
- case 218 /* SyntaxKind.ParenthesizedExpression */:
820
+ case 213 /* SyntaxKind.PropertyAccessExpression */:
821
+ case 219 /* SyntaxKind.ParenthesizedExpression */:
819
822
  return isPossiblyDiscriminantValue(getExpression(node));
820
- case 295 /* SyntaxKind.JsxExpression */: {
823
+ case 296 /* SyntaxKind.JsxExpression */: {
821
824
  const expression = getExpression(node);
822
825
  return expression === undefined || isPossiblyDiscriminantValue(expression);
823
826
  }
@@ -912,7 +915,7 @@ function discriminantMatches(c, props, index, t) {
912
915
  let propType;
913
916
  if (index < props.length) {
914
917
  const prop = props[index];
915
- if (prop.kind === 303 /* SyntaxKind.PropertyAssignment */)
918
+ if (prop.kind === 304 /* SyntaxKind.PropertyAssignment */)
916
919
  propType = getContextFreeTypeOfExpression(c, prop.initializer);
917
920
  else if (prop instanceof JsxAttribute)
918
921
  // An attribute without an initializer is `true`.
@@ -957,7 +960,7 @@ export function hasContextSensitiveParameters(func) {
957
960
  for (const p of params)
958
961
  if (getType(p) === undefined)
959
962
  return true;
960
- if (func.kind !== 220 /* SyntaxKind.ArrowFunction */) {
963
+ if (func.kind !== 221 /* SyntaxKind.ArrowFunction */) {
961
964
  // Without an explicit `this` parameter, the implicit one is contextually typed.
962
965
  if (params.length === 0 || !isThisParameter(params[0]))
963
966
  return (func.flags & 128 /* NodeFlags.ContainsThis */) !== 0;
@@ -1084,7 +1087,7 @@ export function getContextuallyTypedParameterType(c, parameter) {
1084
1087
  }
1085
1088
  /** The contextual type of an intra-expression inference site. */
1086
1089
  export function getContextualTypeForInference(c, node) {
1087
- return node.kind === 175 /* SyntaxKind.MethodDeclaration */
1090
+ return node.kind === 176 /* SyntaxKind.MethodDeclaration */
1088
1091
  ? getContextualTypeForObjectLiteralElement(c, node, 2 /* ContextFlags.NoConstraints */)
1089
1092
  : getContextualTypeEx(c, node, 2 /* ContextFlags.NoConstraints */);
1090
1093
  }
@@ -1109,7 +1112,7 @@ function getThisTypeOfObjectLiteralFromContextualType(c, containingLiteral, cont
1109
1112
  const thisType = getThisTypeFromContextualType(c, t);
1110
1113
  if (thisType !== undefined)
1111
1114
  return thisType;
1112
- if (literal.parent.kind !== 303 /* SyntaxKind.PropertyAssignment */)
1115
+ if (literal.parent.kind !== 304 /* SyntaxKind.PropertyAssignment */)
1113
1116
  break;
1114
1117
  literal = literal.parent.parent;
1115
1118
  t = getApparentTypeOfContextualTypeEx(c, literal, 0 /* ContextFlags.None */);
@@ -25,7 +25,7 @@ export function checkResolvedBlockScopedVariable(c, resolved, errorLocation) {
25
25
  let declaration;
26
26
  for (let i = 0; i < declarationCount(result); i++) {
27
27
  const d = declarationAt(result, i);
28
- if (isBlockOrCatchScoped(d) || isClassLike(d) || d.kind === 267 /* SyntaxKind.EnumDeclaration */) {
28
+ if (isBlockOrCatchScoped(d) || isClassLike(d) || d.kind === 268 /* SyntaxKind.EnumDeclaration */) {
29
29
  declaration = d;
30
30
  break;
31
31
  }
@@ -37,13 +37,13 @@ export function checkResolvedBlockScopedVariable(c, resolved, errorLocation) {
37
37
  const declarationName = declarationNameToString(getSourceFileOfNode(declaration), getNameOfDeclaration(declaration));
38
38
  let diagnostic = undefined;
39
39
  if ((result.flags & 2 /* SymbolFlags.BlockScopedVariable */) !== 0)
40
- diagnostic = c.error(errorLocation, 616 /* Diagnostics.Block_scoped_variable_0_used_before_its_declaration */, declarationName);
40
+ diagnostic = c.error(errorLocation, 623 /* Diagnostics.Block_scoped_variable_0_used_before_its_declaration */, declarationName);
41
41
  else if ((result.flags & 32 /* SymbolFlags.Class */) !== 0)
42
- diagnostic = c.error(errorLocation, 617 /* Diagnostics.Class_0_used_before_its_declaration */, declarationName);
42
+ diagnostic = c.error(errorLocation, 624 /* Diagnostics.Class_0_used_before_its_declaration */, declarationName);
43
43
  else if ((result.flags & 256 /* SymbolFlags.RegularEnum */) !== 0 || c.isolatedModules)
44
- diagnostic = c.error(errorLocation, 618 /* Diagnostics.Enum_0_used_before_its_declaration */, declarationName);
44
+ diagnostic = c.error(errorLocation, 625 /* Diagnostics.Enum_0_used_before_its_declaration */, declarationName);
45
45
  if (diagnostic !== undefined)
46
- diagnostic.addRelatedInfo(createDiagnosticForNode(declaration, 860 /* Diagnostics.X_0_is_declared_here */, [declarationName]));
46
+ diagnostic.addRelatedInfo(createDiagnosticForNode(declaration, 867 /* Diagnostics.X_0_is_declared_here */, [declarationName]));
47
47
  }
48
48
  /** Reports a class property read in an initializer before it's initialized. */
49
49
  export function checkPropertyNotUsedBeforeDeclaration(c, prop, node, right) {
@@ -56,33 +56,33 @@ export function checkPropertyNotUsedBeforeDeclaration(c, prop, node, right) {
56
56
  !isOptionalPropertyDeclaration(valueDeclaration) &&
57
57
  !(isAccessExpression(node) && isAccessExpression(getExpression(node))) &&
58
58
  !isBlockScopedNameDeclaredBeforeUse(c, valueDeclaration, right) &&
59
- !(valueDeclaration.kind === 175 /* SyntaxKind.MethodDeclaration */ && isStatic(valueDeclaration)) &&
59
+ !(valueDeclaration.kind === 176 /* SyntaxKind.MethodDeclaration */ && isStatic(valueDeclaration)) &&
60
60
  (getUseDefineForClassFields(c) || !isPropertyDeclaredInAncestorClass(c, prop)))
61
- diagnostic = c.error(right, 861 /* Diagnostics.Property_0_is_used_before_its_initialization */, declarationName);
62
- else if (valueDeclaration.kind === 264 /* SyntaxKind.ClassDeclaration */ &&
63
- node.parent.kind !== 184 /* SyntaxKind.TypeReference */ &&
61
+ diagnostic = c.error(right, 868 /* Diagnostics.Property_0_is_used_before_its_initialization */, declarationName);
62
+ else if (valueDeclaration.kind === 265 /* SyntaxKind.ClassDeclaration */ &&
63
+ node.parent.kind !== 185 /* SyntaxKind.TypeReference */ &&
64
64
  (valueDeclaration.flags & 8388608 /* NodeFlags.Ambient */) === 0 &&
65
65
  !isBlockScopedNameDeclaredBeforeUse(c, valueDeclaration, right))
66
- diagnostic = c.error(right, 617 /* Diagnostics.Class_0_used_before_its_declaration */, declarationName);
66
+ diagnostic = c.error(right, 624 /* Diagnostics.Class_0_used_before_its_declaration */, declarationName);
67
67
  if (diagnostic !== undefined)
68
- diagnostic.addRelatedInfo(createDiagnosticForNode(valueDeclaration, 860 /* Diagnostics.X_0_is_declared_here */, [declarationName]));
68
+ diagnostic.addRelatedInfo(createDiagnosticForNode(valueDeclaration, 867 /* Diagnostics.X_0_is_declared_here */, [declarationName]));
69
69
  }
70
70
  export function isInPropertyInitializerOrClassStaticBlock(node, ignoreArrowFunctions) {
71
71
  for (let current = node; current !== undefined; current = current.parent) {
72
72
  switch (current.kind) {
73
- case 173 /* SyntaxKind.PropertyDeclaration */:
74
- case 176 /* SyntaxKind.ClassStaticBlockDeclaration */:
73
+ case 174 /* SyntaxKind.PropertyDeclaration */:
74
+ case 177 /* SyntaxKind.ClassStaticBlockDeclaration */:
75
75
  return true;
76
- case 187 /* SyntaxKind.TypeQuery */:
77
- case 288 /* SyntaxKind.JsxClosingElement */:
76
+ case 188 /* SyntaxKind.TypeQuery */:
77
+ case 289 /* SyntaxKind.JsxClosingElement */:
78
78
  return false;
79
- case 220 /* SyntaxKind.ArrowFunction */:
79
+ case 221 /* SyntaxKind.ArrowFunction */:
80
80
  if (!ignoreArrowFunctions)
81
81
  return false;
82
82
  break;
83
- case 242 /* SyntaxKind.Block */: {
83
+ case 243 /* SyntaxKind.Block */: {
84
84
  const parent = current.parent;
85
- if (isFunctionLike(parent) && parent.kind !== 220 /* SyntaxKind.ArrowFunction */)
85
+ if (isFunctionLike(parent) && parent.kind !== 221 /* SyntaxKind.ArrowFunction */)
86
86
  return false;
87
87
  }
88
88
  }
@@ -90,7 +90,7 @@ export function isInPropertyInitializerOrClassStaticBlock(node, ignoreArrowFunct
90
90
  return false;
91
91
  }
92
92
  function isOptionalPropertyDeclaration(node) {
93
- if (node.kind !== 173 /* SyntaxKind.PropertyDeclaration */)
93
+ if (node.kind !== 174 /* SyntaxKind.PropertyDeclaration */)
94
94
  return false;
95
95
  const postfix = getPostfixToken(node);
96
96
  return postfix !== undefined && postfix.kind === 57 /* SyntaxKind.QuestionToken */;
@@ -120,25 +120,25 @@ export function isBlockScopedNameDeclaredBeforeUse(c, declaration, usage) {
120
120
  if ((usage.flags & 4194304 /* NodeFlags.JSDoc */) !== 0 || isPartOfTypeQuery(usage) || isInAmbientOrTypeNode(usage))
121
121
  return true;
122
122
  if (declaration.pos <= usage.pos &&
123
- !(declaration.kind === 173 /* SyntaxKind.PropertyDeclaration */ &&
123
+ !(declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ &&
124
124
  isThisProperty(usage.parent) &&
125
125
  getInitializer(declaration) === undefined &&
126
126
  declaration.postfixToken?.kind !== 53 /* SyntaxKind.ExclamationToken */)) {
127
- if (declaration.kind === 209 /* SyntaxKind.BindingElement */) {
127
+ if (declaration.kind === 210 /* SyntaxKind.BindingElement */) {
128
128
  // Binding elements may use earlier siblings only (`var [a = b, b = b] = ...` is an error).
129
- const errorBindingElement = findAncestorOfKind(usage, 209 /* SyntaxKind.BindingElement */);
129
+ const errorBindingElement = findAncestorOfKind(usage, 210 /* SyntaxKind.BindingElement */);
130
130
  if (errorBindingElement !== undefined)
131
- return (findAncestorOfKind(errorBindingElement, 209 /* SyntaxKind.BindingElement */) !==
132
- findAncestorOfKind(declaration, 209 /* SyntaxKind.BindingElement */) || declaration.pos < errorBindingElement.pos);
131
+ return (findAncestorOfKind(errorBindingElement, 210 /* SyntaxKind.BindingElement */) !==
132
+ findAncestorOfKind(declaration, 210 /* SyntaxKind.BindingElement */) || declaration.pos < errorBindingElement.pos);
133
133
  // `var [a] = a` uses the variable before its declaration.
134
- return isBlockScopedNameDeclaredBeforeUse(c, findAncestorOfKind(declaration, 261 /* SyntaxKind.VariableDeclaration */), usage);
134
+ return isBlockScopedNameDeclaredBeforeUse(c, findAncestorOfKind(declaration, 262 /* SyntaxKind.VariableDeclaration */), usage);
135
135
  }
136
- if (declaration.kind === 261 /* SyntaxKind.VariableDeclaration */)
136
+ if (declaration.kind === 262 /* SyntaxKind.VariableDeclaration */)
137
137
  // `var a = a` uses the variable in its own initializer.
138
138
  return !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage, declContainer);
139
139
  if (isClassLike(declaration))
140
140
  return !isUsedInClassComputedNameOrDecorator(c, declaration, usage);
141
- if (declaration.kind === 173 /* SyntaxKind.PropertyDeclaration */)
141
+ if (declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */)
142
142
  // A self-referencing property initializer, as in `x = this.x`.
143
143
  return !isPropertyImmediatelyReferencedWithinDeclaration(declaration, usage, false);
144
144
  if (isParameterPropertyDeclaration(declaration, declaration.parent))
@@ -151,12 +151,12 @@ export function isBlockScopedNameDeclaredBeforeUse(c, declaration, usage) {
151
151
  // Uses after the declaration are legal when deferred: in export specifiers and `export =`,
152
152
  // functions, and instance property initializers referencing other members.
153
153
  const parent = usage.parent;
154
- if (parent.kind === 282 /* SyntaxKind.ExportSpecifier */ || isExportEquals(parent) || isExportEquals(usage))
154
+ if (parent.kind === 283 /* SyntaxKind.ExportSpecifier */ || isExportEquals(parent) || isExportEquals(usage))
155
155
  return true;
156
156
  if (isUsedInFunctionOrInstanceProperty(c, usage, declaration, declContainer)) {
157
157
  if (getEmitStandardClassFields(c) &&
158
158
  getContainingClass(declaration) !== undefined &&
159
- (declaration.kind === 173 /* SyntaxKind.PropertyDeclaration */ ||
159
+ (declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ ||
160
160
  isParameterPropertyDeclaration(declaration, declaration.parent)))
161
161
  return !isPropertyImmediatelyReferencedWithinDeclaration(declaration, usage, true);
162
162
  return true;
@@ -164,7 +164,7 @@ export function isBlockScopedNameDeclaredBeforeUse(c, declaration, usage) {
164
164
  return false;
165
165
  }
166
166
  function isExportEquals(node) {
167
- return node.kind === 278 /* SyntaxKind.ExportAssignment */ && node.isExportEquals;
167
+ return node.kind === 279 /* SyntaxKind.ExportAssignment */ && node.isExportEquals;
168
168
  }
169
169
  /**
170
170
  * Whether a use of a class within its own declaration happens before the class exists: in a
@@ -174,24 +174,24 @@ function isUsedInClassComputedNameOrDecorator(c, declaration, usage) {
174
174
  const legacyDecorators = c.compilerOptions.experimentalDecorators === true;
175
175
  let container = usage;
176
176
  while (container !== undefined && container !== declaration) {
177
- if (container.kind === 168 /* SyntaxKind.ComputedPropertyName */ && container.parent.parent === declaration)
177
+ if (container.kind === 169 /* SyntaxKind.ComputedPropertyName */ && container.parent.parent === declaration)
178
178
  break;
179
- if (!legacyDecorators && container.kind === 171 /* SyntaxKind.Decorator */) {
179
+ if (!legacyDecorators && container.kind === 172 /* SyntaxKind.Decorator */) {
180
180
  const decorated = container.parent;
181
181
  if (decorated === declaration ||
182
- ((decorated.kind === 175 /* SyntaxKind.MethodDeclaration */ ||
183
- decorated.kind === 178 /* SyntaxKind.GetAccessor */ ||
184
- decorated.kind === 179 /* SyntaxKind.SetAccessor */ ||
185
- decorated.kind === 173 /* SyntaxKind.PropertyDeclaration */) &&
182
+ ((decorated.kind === 176 /* SyntaxKind.MethodDeclaration */ ||
183
+ decorated.kind === 179 /* SyntaxKind.GetAccessor */ ||
184
+ decorated.kind === 180 /* SyntaxKind.SetAccessor */ ||
185
+ decorated.kind === 174 /* SyntaxKind.PropertyDeclaration */) &&
186
186
  decorated.parent === declaration) ||
187
- (decorated.kind === 170 /* SyntaxKind.Parameter */ && decorated.parent.parent === declaration))
187
+ (decorated.kind === 171 /* SyntaxKind.Parameter */ && decorated.parent.parent === declaration))
188
188
  break;
189
189
  }
190
190
  container = container.parent;
191
191
  }
192
192
  if (container === undefined || container === declaration)
193
193
  return false;
194
- if (!legacyDecorators && container.kind === 171 /* SyntaxKind.Decorator */) {
194
+ if (!legacyDecorators && container.kind === 172 /* SyntaxKind.Decorator */) {
195
195
  let n = usage;
196
196
  while (n !== undefined && n !== container) {
197
197
  if (isFunctionLike(n) && getImmediatelyInvokedFunctionExpression(n) === undefined)
@@ -215,36 +215,36 @@ function isInAmbientOrTypeNode(node) {
215
215
  if ((node.flags & 8388608 /* NodeFlags.Ambient */) !== 0)
216
216
  return true;
217
217
  for (let current = node; current !== undefined; current = current.parent)
218
- if (current.kind === 265 /* SyntaxKind.InterfaceDeclaration */ ||
219
- current.kind === 266 /* SyntaxKind.TypeAliasDeclaration */ ||
220
- current.kind === 188 /* SyntaxKind.TypeLiteral */)
218
+ if (current.kind === 266 /* SyntaxKind.InterfaceDeclaration */ ||
219
+ current.kind === 267 /* SyntaxKind.TypeAliasDeclaration */ ||
220
+ current.kind === 189 /* SyntaxKind.TypeLiteral */)
221
221
  return true;
222
222
  return false;
223
223
  }
224
224
  export function getEnclosingBlockScopeContainer(node) {
225
225
  for (let current = node.parent; current !== undefined; current = current.parent) {
226
226
  switch (current.kind) {
227
- case 307 /* SyntaxKind.SourceFile */:
228
- case 270 /* SyntaxKind.CaseBlock */:
229
- case 300 /* SyntaxKind.CatchClause */:
230
- case 268 /* SyntaxKind.ModuleDeclaration */:
231
- case 249 /* SyntaxKind.ForStatement */:
232
- case 250 /* SyntaxKind.ForInStatement */:
233
- case 251 /* SyntaxKind.ForOfStatement */:
234
- case 177 /* SyntaxKind.Constructor */:
235
- case 175 /* SyntaxKind.MethodDeclaration */:
236
- case 178 /* SyntaxKind.GetAccessor */:
237
- case 179 /* SyntaxKind.SetAccessor */:
238
- case 263 /* SyntaxKind.FunctionDeclaration */:
239
- case 219 /* SyntaxKind.FunctionExpression */:
240
- case 220 /* SyntaxKind.ArrowFunction */:
241
- case 173 /* SyntaxKind.PropertyDeclaration */:
242
- case 176 /* SyntaxKind.ClassStaticBlockDeclaration */:
227
+ case 308 /* SyntaxKind.SourceFile */:
228
+ case 271 /* SyntaxKind.CaseBlock */:
229
+ case 301 /* SyntaxKind.CatchClause */:
230
+ case 269 /* SyntaxKind.ModuleDeclaration */:
231
+ case 250 /* SyntaxKind.ForStatement */:
232
+ case 251 /* SyntaxKind.ForInStatement */:
233
+ case 252 /* SyntaxKind.ForOfStatement */:
234
+ case 178 /* SyntaxKind.Constructor */:
235
+ case 176 /* SyntaxKind.MethodDeclaration */:
236
+ case 179 /* SyntaxKind.GetAccessor */:
237
+ case 180 /* SyntaxKind.SetAccessor */:
238
+ case 264 /* SyntaxKind.FunctionDeclaration */:
239
+ case 220 /* SyntaxKind.FunctionExpression */:
240
+ case 221 /* SyntaxKind.ArrowFunction */:
241
+ case 174 /* SyntaxKind.PropertyDeclaration */:
242
+ case 177 /* SyntaxKind.ClassStaticBlockDeclaration */:
243
243
  return current;
244
- case 242 /* SyntaxKind.Block */: {
244
+ case 243 /* SyntaxKind.Block */: {
245
245
  // Function bodies aren't block scope containers of their own.
246
246
  const parent = current.parent;
247
- if (!isFunctionLike(parent) && parent.kind !== 176 /* SyntaxKind.ClassStaticBlockDeclaration */)
247
+ if (!isFunctionLike(parent) && parent.kind !== 177 /* SyntaxKind.ClassStaticBlockDeclaration */)
248
248
  return current;
249
249
  }
250
250
  }
@@ -260,25 +260,25 @@ function isUsedInFunctionOrInstanceProperty(c, usage, declaration, declContainer
260
260
  return true;
261
261
  continue;
262
262
  }
263
- if (current.kind === 176 /* SyntaxKind.ClassStaticBlockDeclaration */) {
263
+ if (current.kind === 177 /* SyntaxKind.ClassStaticBlockDeclaration */) {
264
264
  if (declaration.pos < usage.pos)
265
265
  return true;
266
266
  continue;
267
267
  }
268
268
  const parent = current.parent;
269
- if (parent !== undefined && parent.kind === 173 /* SyntaxKind.PropertyDeclaration */ && getInitializer(parent) === current) {
269
+ if (parent !== undefined && parent.kind === 174 /* SyntaxKind.PropertyDeclaration */ && getInitializer(parent) === current) {
270
270
  if (isStatic(parent)) {
271
- if (declaration.kind === 175 /* SyntaxKind.MethodDeclaration */)
271
+ if (declaration.kind === 176 /* SyntaxKind.MethodDeclaration */)
272
272
  return true;
273
273
  // A static property assigned in a static block before the initializer.
274
- if (declaration.kind === 173 /* SyntaxKind.PropertyDeclaration */ &&
274
+ if (declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ &&
275
275
  getContainingClass(usage) === getContainingClass(declaration)) {
276
276
  const propName = getName(declaration);
277
277
  if (propName.kind === 79 /* SyntaxKind.Identifier */ || propName.kind === 80 /* SyntaxKind.PrivateIdentifier */) {
278
278
  const symbol = getSymbolOfDeclaration(c, declaration);
279
279
  const staticBlocks = [];
280
280
  for (const m of getMembers(declaration.parent).nodes)
281
- if (m.kind === 176 /* SyntaxKind.ClassStaticBlockDeclaration */)
281
+ if (m.kind === 177 /* SyntaxKind.ClassStaticBlockDeclaration */)
282
282
  staticBlocks.push(m);
283
283
  if (symbol !== undefined &&
284
284
  isPropertyInitializedInStaticBlocks(c, propName, getTypeOfSymbol(c, symbol), staticBlocks, declaration.parent.pos, current.pos))
@@ -287,16 +287,16 @@ function isUsedInFunctionOrInstanceProperty(c, usage, declaration, declContainer
287
287
  }
288
288
  }
289
289
  else {
290
- const isDeclarationInstanceProperty = declaration.kind === 173 /* SyntaxKind.PropertyDeclaration */ && !isStatic(declaration);
290
+ const isDeclarationInstanceProperty = declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ && !isStatic(declaration);
291
291
  if (!isDeclarationInstanceProperty || getContainingClass(usage) !== getContainingClass(declaration))
292
292
  return true;
293
293
  }
294
294
  }
295
- if (parent !== undefined && parent.kind === 171 /* SyntaxKind.Decorator */ && getExpression(parent) === current) {
295
+ if (parent !== undefined && parent.kind === 172 /* SyntaxKind.Decorator */ && getExpression(parent) === current) {
296
296
  const decorated = parent.parent;
297
- if (decorated.kind === 170 /* SyntaxKind.Parameter */)
297
+ if (decorated.kind === 171 /* SyntaxKind.Parameter */)
298
298
  return isUsedInFunctionOrInstanceProperty(c, decorated.parent.parent, declaration, declContainer);
299
- if (decorated.kind === 175 /* SyntaxKind.MethodDeclaration */)
299
+ if (decorated.kind === 176 /* SyntaxKind.MethodDeclaration */)
300
300
  return isUsedInFunctionOrInstanceProperty(c, decorated.parent, declaration, declContainer);
301
301
  }
302
302
  }
@@ -305,15 +305,15 @@ function isUsedInFunctionOrInstanceProperty(c, usage, declaration, declContainer
305
305
  function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage, declContainer) {
306
306
  const grandparent = declaration.parent.parent;
307
307
  switch (grandparent.kind) {
308
- case 244 /* SyntaxKind.VariableStatement */:
309
- case 249 /* SyntaxKind.ForStatement */:
310
- case 251 /* SyntaxKind.ForOfStatement */:
308
+ case 245 /* SyntaxKind.VariableStatement */:
309
+ case 250 /* SyntaxKind.ForStatement */:
310
+ case 252 /* SyntaxKind.ForOfStatement */:
311
311
  // The use is within the declaration: its initializer or a binding element.
312
312
  if (isSameScopeDescendentOf(usage, declaration, declContainer))
313
313
  return true;
314
314
  }
315
315
  // In `for (... in/of expr)`, the use is within the expression.
316
- return ((grandparent.kind === 250 /* SyntaxKind.ForInStatement */ || grandparent.kind === 251 /* SyntaxKind.ForOfStatement */) &&
316
+ return ((grandparent.kind === 251 /* SyntaxKind.ForInStatement */ || grandparent.kind === 252 /* SyntaxKind.ForOfStatement */) &&
317
317
  isSameScopeDescendentOf(usage, getExpression(grandparent), declContainer));
318
318
  }
319
319
  /** Whether `initial` is within `parent` without crossing `stopAt` or a function that isn't an IIFE. */
@@ -337,19 +337,19 @@ function isPropertyImmediatelyReferencedWithinDeclaration(declaration, usage, st
337
337
  return false;
338
338
  for (let node = usage; node !== undefined && node !== declaration; node = node.parent) {
339
339
  switch (node.kind) {
340
- case 220 /* SyntaxKind.ArrowFunction */:
340
+ case 221 /* SyntaxKind.ArrowFunction */:
341
341
  return false;
342
- case 173 /* SyntaxKind.PropertyDeclaration */:
342
+ case 174 /* SyntaxKind.PropertyDeclaration */:
343
343
  // Even when stopping at any property declaration, it must be in the same class.
344
344
  return (stopAtAnyPropertyDeclaration &&
345
- ((declaration.kind === 173 /* SyntaxKind.PropertyDeclaration */ && node.parent === declaration.parent) ||
345
+ ((declaration.kind === 174 /* SyntaxKind.PropertyDeclaration */ && node.parent === declaration.parent) ||
346
346
  (isParameterPropertyDeclaration(declaration, declaration.parent) &&
347
347
  node.parent === declaration.parent.parent)));
348
- case 242 /* SyntaxKind.Block */:
348
+ case 243 /* SyntaxKind.Block */:
349
349
  switch (node.parent.kind) {
350
- case 175 /* SyntaxKind.MethodDeclaration */:
351
- case 178 /* SyntaxKind.GetAccessor */:
352
- case 179 /* SyntaxKind.SetAccessor */:
350
+ case 176 /* SyntaxKind.MethodDeclaration */:
351
+ case 179 /* SyntaxKind.GetAccessor */:
352
+ case 180 /* SyntaxKind.SetAccessor */:
353
353
  return false;
354
354
  }
355
355
  }