tsc-ts 0.0.10 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/README.md +1 -1
  2. package/bin/tsc-ts.js +70 -1
  3. package/dist/api/compiler/ast-utilities.d.ts +19 -1
  4. package/dist/api/compiler/ast-utilities.js +180 -95
  5. package/dist/api/compiler/ast.d.ts +20 -15
  6. package/dist/api/compiler/ast.js +1023 -995
  7. package/dist/api/compiler/astnav.js +15 -15
  8. package/dist/api/compiler/binder-utilities.js +186 -186
  9. package/dist/api/compiler/binder.js +290 -263
  10. package/dist/api/compiler/character-codes.js +2 -2
  11. package/dist/api/compiler/checker-calls.js +173 -123
  12. package/dist/api/compiler/checker-classes.d.ts +14 -3
  13. package/dist/api/compiler/checker-classes.js +134 -90
  14. package/dist/api/compiler/checker-contextual.js +64 -61
  15. package/dist/api/compiler/checker-declaration-order.js +79 -79
  16. package/dist/api/compiler/checker-declarations.d.ts +1 -0
  17. package/dist/api/compiler/checker-declarations.js +160 -136
  18. package/dist/api/compiler/checker-declared-types.js +67 -65
  19. package/dist/api/compiler/checker-decorators.js +77 -77
  20. package/dist/api/compiler/checker-deprecation.d.ts +8 -3
  21. package/dist/api/compiler/checker-deprecation.js +76 -55
  22. package/dist/api/compiler/checker-destructuring.js +47 -45
  23. package/dist/api/compiler/checker-elaboration.js +24 -24
  24. package/dist/api/compiler/checker-emit-helpers.js +4 -4
  25. package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
  26. package/dist/api/compiler/checker-emit-resolver.js +25 -13
  27. package/dist/api/compiler/checker-evaluator.js +9 -9
  28. package/dist/api/compiler/checker-expressions.js +244 -211
  29. package/dist/api/compiler/checker-functions.js +113 -107
  30. package/dist/api/compiler/checker-generated-code.d.ts +0 -11
  31. package/dist/api/compiler/checker-generated-code.js +28 -52
  32. package/dist/api/compiler/checker-grammar.d.ts +1 -0
  33. package/dist/api/compiler/checker-grammar.js +469 -438
  34. package/dist/api/compiler/checker-heritage.js +91 -93
  35. package/dist/api/compiler/checker-inference.d.ts +77 -5
  36. package/dist/api/compiler/checker-inference.js +487 -113
  37. package/dist/api/compiler/checker-iteration.d.ts +0 -10
  38. package/dist/api/compiler/checker-iteration.js +35 -52
  39. package/dist/api/compiler/checker-javascript.js +14 -14
  40. package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
  41. package/dist/api/compiler/checker-jsdoc.js +67 -58
  42. package/dist/api/compiler/checker-jsx.js +105 -88
  43. package/dist/api/compiler/checker-members.d.ts +9 -2
  44. package/dist/api/compiler/checker-members.js +210 -74
  45. package/dist/api/compiler/checker-modules.d.ts +15 -6
  46. package/dist/api/compiler/checker-modules.js +469 -309
  47. package/dist/api/compiler/checker-narrowing.js +273 -189
  48. package/dist/api/compiler/checker-object-literals.js +25 -22
  49. package/dist/api/compiler/checker-operators.js +126 -118
  50. package/dist/api/compiler/checker-overloads.js +27 -27
  51. package/dist/api/compiler/checker-property-access.js +59 -55
  52. package/dist/api/compiler/checker-services.d.ts +1 -0
  53. package/dist/api/compiler/checker-services.js +222 -210
  54. package/dist/api/compiler/checker-signatures.js +65 -49
  55. package/dist/api/compiler/checker-source-file.d.ts +5 -0
  56. package/dist/api/compiler/checker-source-file.js +154 -130
  57. package/dist/api/compiler/checker-statements.js +33 -32
  58. package/dist/api/compiler/checker-super.js +50 -50
  59. package/dist/api/compiler/checker-symbol-types.js +109 -93
  60. package/dist/api/compiler/checker-symbols.d.ts +13 -1
  61. package/dist/api/compiler/checker-symbols.js +264 -149
  62. package/dist/api/compiler/checker-type-factory.d.ts +5 -0
  63. package/dist/api/compiler/checker-type-factory.js +137 -34
  64. package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
  65. package/dist/api/compiler/checker-type-nodes.js +179 -141
  66. package/dist/api/compiler/checker-type-operators.d.ts +2 -0
  67. package/dist/api/compiler/checker-type-operators.js +110 -63
  68. package/dist/api/compiler/checker-types.d.ts +80 -3
  69. package/dist/api/compiler/checker-types.js +121 -2
  70. package/dist/api/compiler/checker-unused.js +114 -118
  71. package/dist/api/compiler/checker-utilities.js +11 -11
  72. package/dist/api/compiler/checker.d.ts +93 -31
  73. package/dist/api/compiler/checker.js +143 -35
  74. package/dist/api/compiler/command-line.d.ts +1 -3
  75. package/dist/api/compiler/command-line.js +47 -44
  76. package/dist/api/compiler/compile-program.d.ts +19 -4
  77. package/dist/api/compiler/compile-program.js +45 -26
  78. package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
  79. package/dist/api/compiler/diagnostic-messages.js +128 -122
  80. package/dist/api/compiler/diagnostics.js +7 -7
  81. package/dist/api/compiler/emitter.d.ts +7 -1
  82. package/dist/api/compiler/emitter.js +53 -11
  83. package/dist/api/compiler/file-include.d.ts +2 -1
  84. package/dist/api/compiler/file-include.js +11 -7
  85. package/dist/api/compiler/file-loader.d.ts +10 -0
  86. package/dist/api/compiler/file-loader.js +138 -41
  87. package/dist/api/compiler/instantiation.d.ts +7 -0
  88. package/dist/api/compiler/instantiation.js +101 -49
  89. package/dist/api/compiler/jsdoc.js +23 -23
  90. package/dist/api/compiler/link-tables.d.ts +48 -18
  91. package/dist/api/compiler/link-tables.js +80 -37
  92. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  93. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  94. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  95. package/dist/api/compiler/locales/de-DE.js +1 -1
  96. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  97. package/dist/api/compiler/locales/es-ES.js +1 -1
  98. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  99. package/dist/api/compiler/locales/fr-FR.js +1 -1
  100. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  101. package/dist/api/compiler/locales/it-IT.js +1 -1
  102. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  103. package/dist/api/compiler/locales/ja-JP.js +1 -1
  104. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  105. package/dist/api/compiler/locales/ko-KR.js +1 -1
  106. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  107. package/dist/api/compiler/locales/pl-PL.js +1 -1
  108. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  109. package/dist/api/compiler/locales/pt-BR.js +1 -1
  110. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  111. package/dist/api/compiler/locales/ru-RU.js +1 -1
  112. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  113. package/dist/api/compiler/locales/tr-TR.js +1 -1
  114. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  115. package/dist/api/compiler/locales/zh-CN.js +1 -1
  116. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  117. package/dist/api/compiler/locales/zh-TW.js +1 -1
  118. package/dist/api/compiler/module-resolution-types.js +6 -6
  119. package/dist/api/compiler/module-resolution.d.ts +10 -1
  120. package/dist/api/compiler/module-resolution.js +115 -84
  121. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  122. package/dist/api/compiler/module-specifiers.js +24 -18
  123. package/dist/api/compiler/name-resolver.js +74 -65
  124. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  125. package/dist/api/compiler/node-builder-names.js +210 -90
  126. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  127. package/dist/api/compiler/node-builder-reuse.js +23 -22
  128. package/dist/api/compiler/node-builder.d.ts +18 -1
  129. package/dist/api/compiler/node-builder.js +191 -102
  130. package/dist/api/compiler/option-declarations.d.ts +2 -6
  131. package/dist/api/compiler/option-declarations.js +315 -375
  132. package/dist/api/compiler/options.d.ts +15 -33
  133. package/dist/api/compiler/options.js +21 -54
  134. package/dist/api/compiler/output-paths.d.ts +4 -1
  135. package/dist/api/compiler/output-paths.js +6 -11
  136. package/dist/api/compiler/package-json.d.ts +3 -3
  137. package/dist/api/compiler/package-json.js +11 -10
  138. package/dist/api/compiler/parser.d.ts +40 -19
  139. package/dist/api/compiler/parser.js +308 -216
  140. package/dist/api/compiler/path.d.ts +9 -0
  141. package/dist/api/compiler/path.js +20 -3
  142. package/dist/api/compiler/printer/emit-context.d.ts +3 -1
  143. package/dist/api/compiler/printer/emit-context.js +16 -1
  144. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  145. package/dist/api/compiler/printer/factory-base.js +7 -3
  146. package/dist/api/compiler/printer/factory.js +3 -1
  147. package/dist/api/compiler/printer/helpers.js +10 -1
  148. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  149. package/dist/api/compiler/printer/name-generator.js +35 -16
  150. package/dist/api/compiler/printer/printer.d.ts +1 -0
  151. package/dist/api/compiler/printer/printer.js +303 -281
  152. package/dist/api/compiler/printer/utilities.js +149 -147
  153. package/dist/api/compiler/program-checker.d.ts +8 -2
  154. package/dist/api/compiler/program-checker.js +84 -34
  155. package/dist/api/compiler/program-utilities.d.ts +3 -1
  156. package/dist/api/compiler/program-utilities.js +28 -15
  157. package/dist/api/compiler/program.d.ts +2 -0
  158. package/dist/api/compiler/program.js +69 -57
  159. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  160. package/dist/api/compiler/pseudo-bigint.js +18 -0
  161. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  162. package/dist/api/compiler/regexp-checker.js +93 -76
  163. package/dist/api/compiler/relations.d.ts +27 -4
  164. package/dist/api/compiler/relations.js +337 -180
  165. package/dist/api/compiler/reparser.js +60 -56
  166. package/dist/api/compiler/scanner.d.ts +19 -2
  167. package/dist/api/compiler/scanner.js +123 -108
  168. package/dist/api/compiler/shared-results.d.ts +463 -0
  169. package/dist/api/compiler/shared-results.js +2128 -0
  170. package/dist/api/compiler/sourcemap.js +2 -2
  171. package/dist/api/compiler/symbol-accessibility.js +87 -74
  172. package/dist/api/compiler/symbol.d.ts +22 -13
  173. package/dist/api/compiler/symbol.js +15 -1
  174. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  175. package/dist/api/compiler/transformers/alias-references.js +247 -139
  176. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  177. package/dist/api/compiler/transformers/async.d.ts +0 -1
  178. package/dist/api/compiler/transformers/async.js +64 -77
  179. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  180. package/dist/api/compiler/transformers/class-fields.js +81 -78
  181. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  182. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  183. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  184. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  185. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  186. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  187. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  188. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  189. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  190. package/dist/api/compiler/transformers/declarations.js +305 -238
  191. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  192. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  193. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  194. package/dist/api/compiler/transformers/destructuring.js +19 -18
  195. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  196. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  197. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  198. package/dist/api/compiler/transformers/for-await.js +25 -25
  199. package/dist/api/compiler/transformers/import-elision.js +14 -14
  200. package/dist/api/compiler/transformers/jsx.js +12 -12
  201. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  202. package/dist/api/compiler/transformers/module.js +8 -8
  203. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  204. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  205. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  206. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  207. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  208. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  209. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  210. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  211. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  212. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  213. package/dist/api/compiler/transformers/using.js +12 -12
  214. package/dist/api/compiler/transformers/utilities.js +77 -77
  215. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  216. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  217. package/dist/api/compiler/tsconfig.d.ts +10 -2
  218. package/dist/api/compiler/tsconfig.js +136 -48
  219. package/dist/api/compiler/type-printer.js +40 -3
  220. package/dist/api/compiler/types.d.ts +2 -1
  221. package/dist/api/library/ast.generated.d.ts +42 -39
  222. package/dist/api/library/ast.generated.js +1 -1
  223. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  224. package/dist/api/library/compiler-options.generated.js +1 -1
  225. package/dist/api/library/disk.js +12 -1
  226. package/dist/api/library/enums.generated.d.ts +206 -206
  227. package/dist/api/library/enums.generated.js +206 -206
  228. package/dist/api/library/nodes.js +26 -26
  229. package/package.json +9 -9
  230. package/src/compiler/ast-utilities.ts +99 -7
  231. package/src/compiler/ast.ts +55 -26
  232. package/src/compiler/binder.ts +39 -4
  233. package/src/compiler/character-codes.ts +2 -2
  234. package/src/compiler/checker-calls.ts +76 -8
  235. package/src/compiler/checker-classes.ts +78 -24
  236. package/src/compiler/checker-contextual.ts +6 -1
  237. package/src/compiler/checker-declarations.ts +31 -4
  238. package/src/compiler/checker-declared-types.ts +8 -5
  239. package/src/compiler/checker-decorators.ts +1 -1
  240. package/src/compiler/checker-deprecation.ts +29 -8
  241. package/src/compiler/checker-destructuring.ts +10 -3
  242. package/src/compiler/checker-emit-helpers.ts +1 -0
  243. package/src/compiler/checker-emit-resolver.ts +16 -6
  244. package/src/compiler/checker-expressions.ts +79 -46
  245. package/src/compiler/checker-functions.ts +21 -6
  246. package/src/compiler/checker-generated-code.ts +2 -22
  247. package/src/compiler/checker-grammar.ts +133 -60
  248. package/src/compiler/checker-heritage.ts +22 -21
  249. package/src/compiler/checker-inference.ts +514 -87
  250. package/src/compiler/checker-iteration.ts +18 -31
  251. package/src/compiler/checker-javascript.ts +1 -1
  252. package/src/compiler/checker-jsdoc.ts +50 -27
  253. package/src/compiler/checker-jsx.ts +26 -4
  254. package/src/compiler/checker-members.ts +197 -55
  255. package/src/compiler/checker-modules.ts +332 -65
  256. package/src/compiler/checker-narrowing.ts +98 -19
  257. package/src/compiler/checker-object-literals.ts +3 -0
  258. package/src/compiler/checker-operators.ts +11 -4
  259. package/src/compiler/checker-property-access.ts +7 -2
  260. package/src/compiler/checker-services.ts +39 -12
  261. package/src/compiler/checker-signatures.ts +15 -1
  262. package/src/compiler/checker-source-file.ts +39 -13
  263. package/src/compiler/checker-statements.ts +3 -2
  264. package/src/compiler/checker-symbol-types.ts +29 -6
  265. package/src/compiler/checker-symbols.ts +158 -15
  266. package/src/compiler/checker-type-factory.ts +120 -21
  267. package/src/compiler/checker-type-nodes.ts +46 -3
  268. package/src/compiler/checker-type-operators.ts +83 -26
  269. package/src/compiler/checker-types.ts +147 -4
  270. package/src/compiler/checker-unused.ts +9 -14
  271. package/src/compiler/checker.ts +168 -41
  272. package/src/compiler/command-line.ts +28 -28
  273. package/src/compiler/compile-program.ts +51 -25
  274. package/src/compiler/decoder.ts +13 -4
  275. package/src/compiler/diagnostic-messages.ts +1973 -1892
  276. package/src/compiler/emitter.ts +57 -8
  277. package/src/compiler/encoder.ts +23 -8
  278. package/src/compiler/file-include.ts +9 -3
  279. package/src/compiler/file-loader.ts +139 -32
  280. package/src/compiler/help.ts +10 -14
  281. package/src/compiler/incremental.ts +86 -18
  282. package/src/compiler/init.ts +2 -7
  283. package/src/compiler/instantiation.ts +77 -22
  284. package/src/compiler/jsdoc.ts +3 -1
  285. package/src/compiler/link-tables.ts +82 -37
  286. package/src/compiler/locales/cs-CZ.ts +1 -1
  287. package/src/compiler/locales/de-DE.ts +1 -1
  288. package/src/compiler/locales/es-ES.ts +1 -1
  289. package/src/compiler/locales/fr-FR.ts +1 -1
  290. package/src/compiler/locales/it-IT.ts +1 -1
  291. package/src/compiler/locales/ja-JP.ts +1 -1
  292. package/src/compiler/locales/ko-KR.ts +1 -1
  293. package/src/compiler/locales/pl-PL.ts +1 -1
  294. package/src/compiler/locales/pt-BR.ts +1 -1
  295. package/src/compiler/locales/ru-RU.ts +1 -1
  296. package/src/compiler/locales/tr-TR.ts +1 -1
  297. package/src/compiler/locales/zh-CN.ts +1 -1
  298. package/src/compiler/locales/zh-TW.ts +1 -1
  299. package/src/compiler/module-resolution.ts +44 -8
  300. package/src/compiler/module-specifiers.ts +62 -20
  301. package/src/compiler/name-resolver.ts +9 -1
  302. package/src/compiler/node-builder-names.ts +236 -54
  303. package/src/compiler/node-builder-pseudo.ts +4 -7
  304. package/src/compiler/node-builder-reuse.ts +5 -4
  305. package/src/compiler/node-builder.ts +130 -31
  306. package/src/compiler/option-declarations.ts +33 -103
  307. package/src/compiler/options.ts +23 -62
  308. package/src/compiler/output-paths.ts +5 -18
  309. package/src/compiler/package-entrypoints.ts +345 -0
  310. package/src/compiler/package-json.ts +4 -4
  311. package/src/compiler/parallel-check.ts +197 -8
  312. package/src/compiler/parallel-emit.ts +1 -1
  313. package/src/compiler/parser.ts +156 -39
  314. package/src/compiler/path.ts +22 -2
  315. package/src/compiler/printer/emit-context.ts +16 -0
  316. package/src/compiler/printer/factory-base.ts +10 -3
  317. package/src/compiler/printer/factory.ts +4 -1
  318. package/src/compiler/printer/helpers.ts +10 -1
  319. package/src/compiler/printer/name-generator.ts +24 -2
  320. package/src/compiler/printer/printer.ts +35 -14
  321. package/src/compiler/printer/utilities.ts +8 -2
  322. package/src/compiler/program-checker.ts +53 -5
  323. package/src/compiler/program-utilities.ts +23 -10
  324. package/src/compiler/program.ts +13 -1
  325. package/src/compiler/pseudo-bigint.ts +17 -0
  326. package/src/compiler/regexp-checker.ts +63 -30
  327. package/src/compiler/relations.ts +233 -77
  328. package/src/compiler/reparser.ts +7 -2
  329. package/src/compiler/scanner.ts +109 -79
  330. package/src/compiler/shared-results.ts +2414 -0
  331. package/src/compiler/show-config.ts +18 -1
  332. package/src/compiler/sourcemap.ts +2 -2
  333. package/src/compiler/symbol-accessibility.ts +26 -3
  334. package/src/compiler/symbol.ts +31 -14
  335. package/src/compiler/syntax-kind.ts +188 -187
  336. package/src/compiler/thread-entry.ts +19 -2
  337. package/src/compiler/transformers/alias-references.ts +123 -4
  338. package/src/compiler/transformers/async.ts +2 -17
  339. package/src/compiler/transformers/class-fields.ts +13 -12
  340. package/src/compiler/transformers/commonjs-module.ts +11 -7
  341. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  342. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  343. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  344. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  345. package/src/compiler/transformers/declarations.ts +134 -48
  346. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  347. package/src/compiler/transformers/destructuring.ts +4 -3
  348. package/src/compiler/transformers/external-module-info.ts +1 -1
  349. package/src/compiler/transformers/jsx.ts +2 -1
  350. package/src/compiler/transformers/reference-resolver.ts +83 -19
  351. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  352. package/src/compiler/transformers/syntax-facts.ts +2 -7
  353. package/src/compiler/transformers/type-eraser.ts +10 -1
  354. package/src/compiler/transformers/type-serialization.ts +3 -2
  355. package/src/compiler/transformers/visitor-base.ts +2 -1
  356. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  357. package/src/compiler/tsc-build.ts +3 -0
  358. package/src/compiler/tsc-cli.ts +2 -0
  359. package/src/compiler/tsc-compile.ts +7 -2
  360. package/src/compiler/tsc-watch.ts +74 -45
  361. package/src/compiler/tsconfig.ts +176 -19
  362. package/src/compiler/type-printer.ts +36 -2
  363. package/src/compiler/types.ts +2 -1
  364. package/src/library/ast.generated.ts +57 -41
  365. package/src/library/compiler-options.generated.ts +117 -103
  366. package/src/library/disk.ts +10 -1
  367. package/src/library/enums.generated.ts +196 -196
@@ -31,12 +31,12 @@ export function checkDecorators(c, node) {
31
31
  checkDecoratorEmitHelpers(c, node);
32
32
  checkDecoratorMetadataImports(c, node);
33
33
  for (const modifier of getModifiers(node).nodes)
34
- if (modifier.kind === 171 /* SyntaxKind.Decorator */)
34
+ if (modifier.kind === 172 /* SyntaxKind.Decorator */)
35
35
  checkDecorator(c, modifier);
36
36
  }
37
37
  function firstDecorator(node) {
38
38
  for (const modifier of getModifiers(node).nodes)
39
- if (modifier.kind === 171 /* SyntaxKind.Decorator */)
39
+ if (modifier.kind === 172 /* SyntaxKind.Decorator */)
40
40
  return modifier;
41
41
  return undefined;
42
42
  }
@@ -47,24 +47,24 @@ function checkDecoratorEmitHelpers(c, node) {
47
47
  return;
48
48
  if (c.legacyDecorators) {
49
49
  checkExternalEmitHelpers(c, decorator, 2 /* ExternalEmitHelpers.Decorate */);
50
- if (node.kind === 170 /* SyntaxKind.Parameter */)
50
+ if (node.kind === 171 /* SyntaxKind.Parameter */)
51
51
  checkExternalEmitHelpers(c, decorator, 8 /* ExternalEmitHelpers.Param */);
52
52
  }
53
53
  else if (c.languageVersion < ScriptTarget.ESNext) {
54
54
  checkExternalEmitHelpers(c, decorator, 2 /* ExternalEmitHelpers.ESDecorateAndRunInitializers */);
55
- if (node.kind === 264 /* SyntaxKind.ClassDeclaration */) {
55
+ if (node.kind === 265 /* SyntaxKind.ClassDeclaration */) {
56
56
  if (getName(node) === undefined || getFirstTransformableStaticClassElement(c, node) !== undefined)
57
57
  checkExternalEmitHelpers(c, decorator, 65536 /* ExternalEmitHelpers.SetFunctionName */);
58
58
  }
59
- else if (node.kind !== 232 /* SyntaxKind.ClassExpression */) {
59
+ else if (node.kind !== 233 /* SyntaxKind.ClassExpression */) {
60
60
  const name = getName(node);
61
61
  if (name.kind === 80 /* SyntaxKind.PrivateIdentifier */ &&
62
- (node.kind === 175 /* SyntaxKind.MethodDeclaration */ ||
63
- node.kind === 178 /* SyntaxKind.GetAccessor */ ||
64
- node.kind === 179 /* SyntaxKind.SetAccessor */ ||
62
+ (node.kind === 176 /* SyntaxKind.MethodDeclaration */ ||
63
+ node.kind === 179 /* SyntaxKind.GetAccessor */ ||
64
+ node.kind === 180 /* SyntaxKind.SetAccessor */ ||
65
65
  isAutoAccessorPropertyDeclaration(node)))
66
66
  checkExternalEmitHelpers(c, decorator, 65536 /* ExternalEmitHelpers.SetFunctionName */);
67
- if (name.kind === 168 /* SyntaxKind.ComputedPropertyName */)
67
+ if (name.kind === 169 /* SyntaxKind.ComputedPropertyName */)
68
68
  checkExternalEmitHelpers(c, decorator, 131072 /* ExternalEmitHelpers.PropKey */);
69
69
  }
70
70
  }
@@ -87,12 +87,12 @@ export function getFirstTransformableStaticClassElement(c, node) {
87
87
  classElementOrClassElementParameterIsDecorated(false, member, node))
88
88
  return firstDecorator(node) ?? node;
89
89
  if (willTransformPrivateElementsOrClassStaticBlocks) {
90
- if (member.kind === 176 /* SyntaxKind.ClassStaticBlockDeclaration */)
90
+ if (member.kind === 177 /* SyntaxKind.ClassStaticBlockDeclaration */)
91
91
  return member;
92
92
  if (isStatic(member) &&
93
93
  (isPrivateIdentifierClassElementDeclaration(member) ||
94
94
  (willTransformInitializers &&
95
- member.kind === 173 /* SyntaxKind.PropertyDeclaration */ &&
95
+ member.kind === 174 /* SyntaxKind.PropertyDeclaration */ &&
96
96
  getInitializer(member) !== undefined)))
97
97
  return member;
98
98
  }
@@ -108,35 +108,35 @@ function checkDecoratorMetadataImports(c, node) {
108
108
  const options = c.compilerOptions;
109
109
  if (options.emitDecoratorMetadata !== true || options.verbatimModuleSyntax === true)
110
110
  return;
111
- if ((node.flags & 8388608 /* NodeFlags.Ambient */) !== 0 && node.kind !== 173 /* SyntaxKind.PropertyDeclaration */)
111
+ if ((node.flags & 8388608 /* NodeFlags.Ambient */) !== 0 && node.kind !== 174 /* SyntaxKind.PropertyDeclaration */)
112
112
  return;
113
113
  checkExternalEmitHelpers(c, firstDecorator(node), 4 /* ExternalEmitHelpers.Metadata */);
114
114
  if (!c.isolatedModules || getEmitModuleKind(options) < ModuleKind.ES2015)
115
115
  return;
116
116
  switch (node.kind) {
117
- case 264 /* SyntaxKind.ClassDeclaration */: {
117
+ case 265 /* SyntaxKind.ClassDeclaration */: {
118
118
  const constructor = getFirstConstructorWithBody(node);
119
119
  if (constructor !== undefined)
120
120
  for (const p of getParameters(constructor).nodes)
121
121
  checkMetadataTypeImport(c, parameterTypeNode(p));
122
122
  break;
123
123
  }
124
- case 178 /* SyntaxKind.GetAccessor */:
125
- case 179 /* SyntaxKind.SetAccessor */: {
126
- const otherKind = node.kind === 178 /* SyntaxKind.GetAccessor */ ? 179 /* SyntaxKind.SetAccessor */ : 178 /* SyntaxKind.GetAccessor */;
124
+ case 179 /* SyntaxKind.GetAccessor */:
125
+ case 180 /* SyntaxKind.SetAccessor */: {
126
+ const otherKind = node.kind === 179 /* SyntaxKind.GetAccessor */ ? 180 /* SyntaxKind.SetAccessor */ : 179 /* SyntaxKind.GetAccessor */;
127
127
  const otherAccessor = getDeclarationOfKind(getSymbolOfDeclaration(c, node), otherKind);
128
128
  checkMetadataTypeImport(c, getAnnotatedAccessorTypeNode(node) ?? getAnnotatedAccessorTypeNode(otherAccessor));
129
129
  break;
130
130
  }
131
- case 175 /* SyntaxKind.MethodDeclaration */:
131
+ case 176 /* SyntaxKind.MethodDeclaration */:
132
132
  for (const p of getParameters(node).nodes)
133
133
  checkMetadataTypeImport(c, parameterTypeNode(p));
134
134
  checkMetadataTypeImport(c, getType(node));
135
135
  break;
136
- case 173 /* SyntaxKind.PropertyDeclaration */:
136
+ case 174 /* SyntaxKind.PropertyDeclaration */:
137
137
  checkMetadataTypeImport(c, getType(node));
138
138
  break;
139
- case 170 /* SyntaxKind.Parameter */: {
139
+ case 171 /* SyntaxKind.Parameter */: {
140
140
  checkMetadataTypeImport(c, parameterTypeNode(node));
141
141
  const signature = node.parent;
142
142
  for (const p of getParameters(signature).nodes)
@@ -153,7 +153,7 @@ function parameterTypeNode(node) {
153
153
  }
154
154
  function checkMetadataTypeImport(c, typeNode) {
155
155
  const typeName = entityNameForDecoratorMetadata(c, typeNode);
156
- if (typeName === undefined || (typeName.kind !== 79 /* SyntaxKind.Identifier */ && typeName.kind !== 167 /* SyntaxKind.QualifiedName */))
156
+ if (typeName === undefined || (typeName.kind !== 79 /* SyntaxKind.Identifier */ && typeName.kind !== 168 /* SyntaxKind.QualifiedName */))
157
157
  return;
158
158
  const rootName = getFirstIdentifier(typeName);
159
159
  const meaning = (typeName.kind === 79 /* SyntaxKind.Identifier */ ? 788968 /* SymbolFlags.Type */ : 1920 /* SymbolFlags.Namespace */) | 2097152 /* SymbolFlags.Alias */;
@@ -172,19 +172,19 @@ function entityNameForDecoratorMetadata(c, node) {
172
172
  if (node === undefined)
173
173
  return undefined;
174
174
  switch (node.kind) {
175
- case 194 /* SyntaxKind.IntersectionType */:
175
+ case 195 /* SyntaxKind.IntersectionType */:
176
176
  return entityNameForDecoratorMetadataFromTypes(c, node.types.nodes);
177
- case 193 /* SyntaxKind.UnionType */:
177
+ case 194 /* SyntaxKind.UnionType */:
178
178
  return entityNameForDecoratorMetadataFromTypes(c, node.types.nodes);
179
- case 195 /* SyntaxKind.ConditionalType */:
179
+ case 196 /* SyntaxKind.ConditionalType */:
180
180
  return entityNameForDecoratorMetadataFromTypes(c, [
181
181
  node.trueType,
182
182
  node.falseType,
183
183
  ]);
184
- case 197 /* SyntaxKind.ParenthesizedType */:
185
- case 203 /* SyntaxKind.NamedTupleMember */:
184
+ case 198 /* SyntaxKind.ParenthesizedType */:
185
+ case 204 /* SyntaxKind.NamedTupleMember */:
186
186
  return entityNameForDecoratorMetadata(c, getType(node));
187
- case 184 /* SyntaxKind.TypeReference */:
187
+ case 185 /* SyntaxKind.TypeReference */:
188
188
  return node.typeName;
189
189
  }
190
190
  return undefined;
@@ -196,7 +196,7 @@ function entityNameForDecoratorMetadataFromTypes(c, types) {
196
196
  if (typeNode.kind === 146 /* SyntaxKind.NeverKeyword */)
197
197
  continue;
198
198
  if (!c.strictNullChecks &&
199
- ((typeNode.kind === 202 /* SyntaxKind.LiteralType */ &&
199
+ ((typeNode.kind === 203 /* SyntaxKind.LiteralType */ &&
200
200
  typeNode.literal.kind === 105 /* SyntaxKind.NullKeyword */) ||
201
201
  typeNode.kind === 157 /* SyntaxKind.UndefinedKeyword */))
202
202
  continue;
@@ -226,7 +226,7 @@ function checkDecorator(c, node) {
226
226
  if (expectedReturnType === undefined)
227
227
  return;
228
228
  const parent = node.parent;
229
- const headMessage = parent.kind === 170 /* SyntaxKind.Parameter */ || (parent.kind === 173 /* SyntaxKind.PropertyDeclaration */ && c.legacyDecorators)
229
+ const headMessage = parent.kind === 171 /* SyntaxKind.Parameter */ || (parent.kind === 174 /* SyntaxKind.PropertyDeclaration */ && c.legacyDecorators)
230
230
  ? 220 /* Diagnostics.Decorator_function_return_type_is_0_but_is_expected_to_be_void_or_any */
231
231
  : 219 /* Diagnostics.Decorator_function_return_type_0_is_not_assignable_to_type_1 */;
232
232
  checkTypeAssignableTo(c, returnType, expectedReturnType, node.expression, headMessage);
@@ -236,7 +236,7 @@ export function hasDecorators(node) {
236
236
  if (modifiers === undefined)
237
237
  return false;
238
238
  for (const modifier of modifiers.nodes)
239
- if (modifier.kind === 171 /* SyntaxKind.Decorator */)
239
+ if (modifier.kind === 172 /* SyntaxKind.Decorator */)
240
240
  return true;
241
241
  return false;
242
242
  }
@@ -247,30 +247,30 @@ export function nodeCanBeDecorated(legacy, node, parent, grandparent) {
247
247
  if (legacy && name !== undefined && name.kind === 80 /* SyntaxKind.PrivateIdentifier */)
248
248
  return false;
249
249
  switch (node.kind) {
250
- case 264 /* SyntaxKind.ClassDeclaration */:
250
+ case 265 /* SyntaxKind.ClassDeclaration */:
251
251
  return true;
252
- case 232 /* SyntaxKind.ClassExpression */:
252
+ case 233 /* SyntaxKind.ClassExpression */:
253
253
  return !legacy;
254
- case 173 /* SyntaxKind.PropertyDeclaration */:
254
+ case 174 /* SyntaxKind.PropertyDeclaration */:
255
255
  return (parent !== undefined &&
256
256
  (legacy
257
- ? parent.kind === 264 /* SyntaxKind.ClassDeclaration */
257
+ ? parent.kind === 265 /* SyntaxKind.ClassDeclaration */
258
258
  : isClassLike(parent) && !hasSyntacticModifier(node, 64 /* ModifierFlags.Abstract */ | 128 /* ModifierFlags.Ambient */)));
259
- case 178 /* SyntaxKind.GetAccessor */:
260
- case 179 /* SyntaxKind.SetAccessor */:
261
- case 175 /* SyntaxKind.MethodDeclaration */:
259
+ case 179 /* SyntaxKind.GetAccessor */:
260
+ case 180 /* SyntaxKind.SetAccessor */:
261
+ case 176 /* SyntaxKind.MethodDeclaration */:
262
262
  return (parent !== undefined &&
263
263
  getBody(node) !== undefined &&
264
- (legacy ? parent.kind === 264 /* SyntaxKind.ClassDeclaration */ : isClassLike(parent)));
265
- case 170 /* SyntaxKind.Parameter */:
264
+ (legacy ? parent.kind === 265 /* SyntaxKind.ClassDeclaration */ : isClassLike(parent)));
265
+ case 171 /* SyntaxKind.Parameter */:
266
266
  if (!legacy || parent === undefined || getBody(parent) === undefined)
267
267
  return false;
268
- return ((parent.kind === 177 /* SyntaxKind.Constructor */ ||
269
- parent.kind === 175 /* SyntaxKind.MethodDeclaration */ ||
270
- parent.kind === 179 /* SyntaxKind.SetAccessor */) &&
268
+ return ((parent.kind === 178 /* SyntaxKind.Constructor */ ||
269
+ parent.kind === 176 /* SyntaxKind.MethodDeclaration */ ||
270
+ parent.kind === 180 /* SyntaxKind.SetAccessor */) &&
271
271
  getThisParameter(parent) !== node &&
272
272
  grandparent !== undefined &&
273
- grandparent.kind === 264 /* SyntaxKind.ClassDeclaration */);
273
+ grandparent.kind === 265 /* SyntaxKind.ClassDeclaration */);
274
274
  }
275
275
  return false;
276
276
  }
@@ -292,12 +292,12 @@ export function getUncalledDecoratorText(node) {
292
292
  /** The head message of errors resolving a decorator as a call. */
293
293
  export function getDiagnosticHeadMessageForDecoratorResolution(node) {
294
294
  switch (node.parent.kind) {
295
- case 264 /* SyntaxKind.ClassDeclaration */:
296
- case 232 /* SyntaxKind.ClassExpression */:
295
+ case 265 /* SyntaxKind.ClassDeclaration */:
296
+ case 233 /* SyntaxKind.ClassExpression */:
297
297
  return 188 /* Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression */;
298
- case 170 /* SyntaxKind.Parameter */:
298
+ case 171 /* SyntaxKind.Parameter */:
299
299
  return 189 /* Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression */;
300
- case 173 /* SyntaxKind.PropertyDeclaration */:
300
+ case 174 /* SyntaxKind.PropertyDeclaration */:
301
301
  return 190 /* Diagnostics.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression */;
302
302
  }
303
303
  return 191 /* Diagnostics.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression */;
@@ -307,16 +307,16 @@ export function getDecoratorArgumentCount(c, node, signature) {
307
307
  if (!c.legacyDecorators)
308
308
  return Math.min(Math.max(getParameterCount(c, signature), 1), 2);
309
309
  switch (node.parent.kind) {
310
- case 264 /* SyntaxKind.ClassDeclaration */:
311
- case 232 /* SyntaxKind.ClassExpression */:
310
+ case 265 /* SyntaxKind.ClassDeclaration */:
311
+ case 233 /* SyntaxKind.ClassExpression */:
312
312
  return 1;
313
- case 173 /* SyntaxKind.PropertyDeclaration */:
313
+ case 174 /* SyntaxKind.PropertyDeclaration */:
314
314
  return hasSyntacticModifier(node.parent, 512 /* ModifierFlags.Accessor */) ? 3 : 2;
315
- case 175 /* SyntaxKind.MethodDeclaration */:
316
- case 178 /* SyntaxKind.GetAccessor */:
317
- case 179 /* SyntaxKind.SetAccessor */:
315
+ case 176 /* SyntaxKind.MethodDeclaration */:
316
+ case 179 /* SyntaxKind.GetAccessor */:
317
+ case 180 /* SyntaxKind.SetAccessor */:
318
318
  // Decorators with only two parameters get only two arguments.
319
- return signature.parameters.length <= 2 ? 2 : 3;
319
+ return getParameterCount(c, signature) <= 2 ? 2 : 3;
320
320
  }
321
321
  return 3;
322
322
  }
@@ -347,17 +347,17 @@ export function getDecoratorCallSignature(c, decorator) {
347
347
  }
348
348
  function getLegacyDecoratorCallSignature(c, node) {
349
349
  switch (node.kind) {
350
- case 264 /* SyntaxKind.ClassDeclaration */:
351
- case 232 /* SyntaxKind.ClassExpression */: {
350
+ case 265 /* SyntaxKind.ClassDeclaration */:
351
+ case 233 /* SyntaxKind.ClassExpression */: {
352
352
  // The target of a class decorator is the constructor side of the class.
353
353
  const targetType = getTypeOfSymbol(c, getSymbolOfDeclaration(c, node));
354
354
  const targetParam = newParameter(c, 'target', targetType);
355
355
  return newCallSignature(c, [targetParam], getUnionType(c, [targetType, c.voidType]));
356
356
  }
357
- case 170 /* SyntaxKind.Parameter */: {
357
+ case 171 /* SyntaxKind.Parameter */: {
358
358
  const fn = node.parent;
359
- if (fn.kind !== 177 /* SyntaxKind.Constructor */ &&
360
- !(fn.kind === 175 /* SyntaxKind.MethodDeclaration */ || (fn.kind === 179 /* SyntaxKind.SetAccessor */ && isClassLike(fn.parent))))
359
+ if (fn.kind !== 178 /* SyntaxKind.Constructor */ &&
360
+ !(fn.kind === 176 /* SyntaxKind.MethodDeclaration */ || (fn.kind === 180 /* SyntaxKind.SetAccessor */ && isClassLike(fn.parent))))
361
361
  return undefined;
362
362
  const thisParameter = getThisParameter(fn);
363
363
  if (thisParameter === node)
@@ -366,7 +366,7 @@ function getLegacyDecoratorCallSignature(c, node) {
366
366
  // A parameter decorator gets the target, the property key and the parameter index.
367
367
  let targetType;
368
368
  let keyType;
369
- if (fn.kind === 177 /* SyntaxKind.Constructor */) {
369
+ if (fn.kind === 178 /* SyntaxKind.Constructor */) {
370
370
  targetType = getTypeOfSymbol(c, getSymbolOfDeclaration(c, fn.parent));
371
371
  keyType = c.undefinedType;
372
372
  }
@@ -381,16 +381,16 @@ function getLegacyDecoratorCallSignature(c, node) {
381
381
  newParameter(c, 'parameterIndex', indexType),
382
382
  ], c.voidType);
383
383
  }
384
- case 175 /* SyntaxKind.MethodDeclaration */:
385
- case 178 /* SyntaxKind.GetAccessor */:
386
- case 179 /* SyntaxKind.SetAccessor */:
387
- case 173 /* SyntaxKind.PropertyDeclaration */: {
384
+ case 176 /* SyntaxKind.MethodDeclaration */:
385
+ case 179 /* SyntaxKind.GetAccessor */:
386
+ case 180 /* SyntaxKind.SetAccessor */:
387
+ case 174 /* SyntaxKind.PropertyDeclaration */: {
388
388
  if (!isClassLike(node.parent))
389
389
  return undefined;
390
390
  // Method and accessor decorators get two or three arguments, property decorators two.
391
391
  const targetParam = newParameter(c, 'target', getParentTypeOfClassElement(c, node));
392
392
  const keyParam = newParameter(c, 'propertyKey', getClassElementPropertyKeyType(c, node));
393
- const isProperty = node.kind === 173 /* SyntaxKind.PropertyDeclaration */;
393
+ const isProperty = node.kind === 174 /* SyntaxKind.PropertyDeclaration */;
394
394
  const returnType = isProperty ? c.voidType : newTypedPropertyDescriptorType(c, getTypeOfDeclaration(c, node));
395
395
  if (!isProperty || hasSyntacticModifier(node, 512 /* ModifierFlags.Accessor */)) {
396
396
  const descriptorType = newTypedPropertyDescriptorType(c, getTypeOfDeclaration(c, node));
@@ -407,31 +407,31 @@ function getLegacyDecoratorCallSignature(c, node) {
407
407
  // details of the decorated element. It may return a replacement for the target.
408
408
  function getESDecoratorCallSignature(c, node) {
409
409
  switch (node.kind) {
410
- case 264 /* SyntaxKind.ClassDeclaration */:
411
- case 232 /* SyntaxKind.ClassExpression */: {
410
+ case 265 /* SyntaxKind.ClassDeclaration */:
411
+ case 233 /* SyntaxKind.ClassExpression */: {
412
412
  const targetType = getTypeOfSymbol(c, getSymbolOfDeclaration(c, node));
413
413
  const contextType = tryCreateTypeReference(c, getGlobalClassDecoratorContextType(c), [targetType]);
414
414
  return newESDecoratorCallSignature(c, targetType, contextType, targetType);
415
415
  }
416
- case 175 /* SyntaxKind.MethodDeclaration */:
417
- case 178 /* SyntaxKind.GetAccessor */:
418
- case 179 /* SyntaxKind.SetAccessor */: {
416
+ case 176 /* SyntaxKind.MethodDeclaration */:
417
+ case 179 /* SyntaxKind.GetAccessor */:
418
+ case 180 /* SyntaxKind.SetAccessor */: {
419
419
  if (!isClassLike(node.parent))
420
420
  return undefined;
421
- const valueType = node.kind === 175 /* SyntaxKind.MethodDeclaration */
421
+ const valueType = node.kind === 176 /* SyntaxKind.MethodDeclaration */
422
422
  ? getOrCreateTypeFromSignature(c, getSignatureFromDeclaration(c, node))
423
423
  : getTypeOfDeclaration(c, node);
424
424
  const thisType = getThisTypeOfClassElement(c, node);
425
425
  // Getters are decorated as `() => value` and setters as `(value) => void`.
426
- const targetType = node.kind === 178 /* SyntaxKind.GetAccessor */
426
+ const targetType = node.kind === 179 /* SyntaxKind.GetAccessor */
427
427
  ? newFunctionType(c, [], valueType)
428
- : node.kind === 179 /* SyntaxKind.SetAccessor */
428
+ : node.kind === 180 /* SyntaxKind.SetAccessor */
429
429
  ? newFunctionType(c, [newParameter(c, 'value', valueType)], c.voidType)
430
430
  : valueType;
431
431
  const contextType = newClassMemberDecoratorContextTypeForNode(c, node, thisType, valueType);
432
432
  return newESDecoratorCallSignature(c, targetType, contextType, targetType);
433
433
  }
434
- case 173 /* SyntaxKind.PropertyDeclaration */: {
434
+ case 174 /* SyntaxKind.PropertyDeclaration */: {
435
435
  if (!isClassLike(node.parent))
436
436
  return undefined;
437
437
  const valueType = getTypeOfDeclaration(c, node);
@@ -464,13 +464,13 @@ function newClassMemberDecoratorContextTypeForNode(c, node, thisType, valueType)
464
464
  : (getLiteralTypeFromPropertyName(c, name) ?? c.neverType);
465
465
  let globalType;
466
466
  switch (node.kind) {
467
- case 175 /* SyntaxKind.MethodDeclaration */:
467
+ case 176 /* SyntaxKind.MethodDeclaration */:
468
468
  globalType = getGlobalClassMethodDecoratorContextType(c);
469
469
  break;
470
- case 178 /* SyntaxKind.GetAccessor */:
470
+ case 179 /* SyntaxKind.GetAccessor */:
471
471
  globalType = getGlobalClassGetterDecoratorContextType(c);
472
472
  break;
473
- case 179 /* SyntaxKind.SetAccessor */:
473
+ case 180 /* SyntaxKind.SetAccessor */:
474
474
  globalType = getGlobalClassSetterDecoratorContextType(c);
475
475
  break;
476
476
  default:
@@ -512,7 +512,7 @@ function getClassElementPropertyKeyType(c, element) {
512
512
  case 8 /* SyntaxKind.NumericLiteral */:
513
513
  case 10 /* SyntaxKind.StringLiteral */:
514
514
  return getStringLiteralType(c, getText(name));
515
- case 168 /* SyntaxKind.ComputedPropertyName */: {
515
+ case 169 /* SyntaxKind.ComputedPropertyName */: {
516
516
  const nameType = checkComputedPropertyName(c, name);
517
517
  return isTypeAssignableToKind(c, nameType, 16896 /* TypeFlags.ESSymbolLike */) ? nameType : c.stringType;
518
518
  }
@@ -1,4 +1,4 @@
1
- import { type JsxAttribute, type Node } from './ast.js';
1
+ import { type Node, type SourceFile } from './ast.js';
2
2
  import { type Checker } from './checker.js';
3
3
  import { type Signature, type Type } from './checker-types.js';
4
4
  import { type Diagnostic } from './diagnostics.js';
@@ -29,5 +29,10 @@ export declare function checkDeprecatedIndexedAccess(c: Checker, accessNode: Nod
29
29
  export declare function checkDeprecatedTypeReference(c: Checker, node: Node, type: Type): void;
30
30
  /** Reports an import specifier importing a deprecated declaration. */
31
31
  export declare function checkDeprecatedImportSpecifier(c: Checker, node: Node, symbol: Symbol): void;
32
- /** Reports a JSX attribute setting a deprecated property of the element's contextual props type. */
33
- export declare function checkDeprecatedJsxAttribute(c: Checker, contextualType: Type, attribute: JsxAttribute): void;
32
+ /** Reports the deprecated properties the checked object literals of `file` set (`checkContextualDeprecations`). */
33
+ export declare function checkObjectLiteralDeprecations(c: Checker, file: SourceFile): void;
34
+ /**
35
+ * Reports the members of an object literal or the attributes of a JSX element that set a deprecated
36
+ * property of its contextual type. Deferred, so the contextual type of the final check is used.
37
+ */
38
+ export declare function checkContextualDeprecations(c: Checker, node: Node): void;
@@ -1,6 +1,6 @@
1
1
  // Deprecation suggestions: uses of declarations marked `@deprecated` in JSDoc report
2
2
  // `'X' is deprecated.` with the tag as related information.
3
- import { JSDoc, JSDocDeprecatedTag, getExpression, getName, getTagName, getText, } from './ast.js';
3
+ import { JSDoc, JSDocDeprecatedTag, getExpression, getName, getProperties, getTagName, getText, } from './ast.js';
4
4
  import { isTypeDeclaration } from './ast-utilities.js';
5
5
  import { isAccessExpression, getCombinedNodeFlags, getSourceFileOfNode, skipParentheses } from './binder-utilities.js';
6
6
  import { createDiagnosticForNode } from './checker.js';
@@ -11,6 +11,7 @@ import { hasMatchingArgument } from './checker-narrowing.js';
11
11
  import { entityNameToString } from './checker-expressions.js';
12
12
  import { isErrorType } from './checker-type-factory.js';
13
13
  import { getPropertyOfType } from './checker-members.js';
14
+ import { getApparentTypeOfContextualType } from './checker-contextual.js';
14
15
  import { signatureToString } from './type-printer.js';
15
16
  import { declarationAt, declarationCount, getDeclarations } from './symbol.js';
16
17
  /** Whether `declaration`, or the statement it belongs to, has a `@deprecated` JSDoc tag. */
@@ -60,14 +61,14 @@ function everyDeprecatedDeclaration(symbol) {
60
61
  return true;
61
62
  }
62
63
  export function addDeprecatedSuggestion(c, location, declarations, deprecatedEntity) {
63
- const diagnostic = createDiagnosticForNode(location, 1475 /* Diagnostics.X_0_is_deprecated */, [deprecatedEntity]);
64
+ const diagnostic = createDiagnosticForNode(location, 1486 /* Diagnostics.X_0_is_deprecated */, [deprecatedEntity]);
64
65
  return addDeprecatedSuggestionWorker(c, declarations, diagnostic);
65
66
  }
66
67
  function addDeprecatedSuggestionWorker(c, declarations, diagnostic) {
67
68
  for (const declaration of declarations) {
68
69
  const deprecatedTag = getJSDocDeprecatedTag(declaration);
69
70
  if (deprecatedTag !== undefined) {
70
- diagnostic.addRelatedInfo(createDiagnosticForNode(deprecatedTag, 930 /* Diagnostics.The_declaration_was_marked_as_deprecated_here */, []));
71
+ diagnostic.addRelatedInfo(createDiagnosticForNode(deprecatedTag, 937 /* Diagnostics.The_declaration_was_marked_as_deprecated_here */, []));
71
72
  break;
72
73
  }
73
74
  }
@@ -84,41 +85,41 @@ export function checkDeprecatedSignature(c, signature, node) {
84
85
  const name = tryGetPropertyAccessOrIdentifierToString(getInvokedExpression(node));
85
86
  const signatureString = signatureToString(c, signature);
86
87
  const diagnostic = name !== ''
87
- ? createDiagnosticForNode(getDeprecatedSuggestionNode(node), 1477 /* Diagnostics.The_signature_0_of_1_is_deprecated */, [
88
+ ? createDiagnosticForNode(getDeprecatedSuggestionNode(node), 1488 /* Diagnostics.The_signature_0_of_1_is_deprecated */, [
88
89
  signatureString,
89
90
  name,
90
91
  ])
91
- : createDiagnosticForNode(getDeprecatedSuggestionNode(node), 1475 /* Diagnostics.X_0_is_deprecated */, [signatureString]);
92
+ : createDiagnosticForNode(getDeprecatedSuggestionNode(node), 1486 /* Diagnostics.X_0_is_deprecated */, [signatureString]);
92
93
  addDeprecatedSuggestionWorker(c, [declaration], diagnostic);
93
94
  }
94
95
  function getInvokedExpression(node) {
95
96
  switch (node.kind) {
96
- case 216 /* SyntaxKind.TaggedTemplateExpression */:
97
+ case 217 /* SyntaxKind.TaggedTemplateExpression */:
97
98
  return node.tag;
98
- case 287 /* SyntaxKind.JsxOpeningElement */:
99
- case 286 /* SyntaxKind.JsxSelfClosingElement */:
99
+ case 288 /* SyntaxKind.JsxOpeningElement */:
100
+ case 287 /* SyntaxKind.JsxSelfClosingElement */:
100
101
  return getTagName(node);
101
- case 227 /* SyntaxKind.BinaryExpression */:
102
+ case 228 /* SyntaxKind.BinaryExpression */:
102
103
  return node.right;
103
- case 290 /* SyntaxKind.JsxOpeningFragment */:
104
+ case 291 /* SyntaxKind.JsxOpeningFragment */:
104
105
  return node;
105
106
  }
106
107
  return getExpression(node);
107
108
  }
108
109
  function tryGetPropertyAccessOrIdentifierToString(expr) {
109
110
  switch (expr.kind) {
110
- case 212 /* SyntaxKind.PropertyAccessExpression */: {
111
+ case 213 /* SyntaxKind.PropertyAccessExpression */: {
111
112
  const base = tryGetPropertyAccessOrIdentifierToString(getExpression(expr));
112
113
  return base !== '' ? base + '.' + entityNameToString(getName(expr)) : '';
113
114
  }
114
- case 213 /* SyntaxKind.ElementAccessExpression */: {
115
+ case 214 /* SyntaxKind.ElementAccessExpression */: {
115
116
  const base = tryGetPropertyAccessOrIdentifierToString(getExpression(expr));
116
117
  const argument = expr.argumentExpression;
117
118
  return base !== '' && isPropertyNameLiteral(argument) ? base + '.' + getText(argument) : '';
118
119
  }
119
120
  case 79 /* SyntaxKind.Identifier */:
120
121
  return getText(expr);
121
- case 296 /* SyntaxKind.JsxNamespacedName */: {
122
+ case 297 /* SyntaxKind.JsxNamespacedName */: {
122
123
  const name = expr;
123
124
  return getText(name.namespace) + ':' + getText(name.name);
124
125
  }
@@ -141,22 +142,22 @@ function isPropertyNameLiteral(node) {
141
142
  export function getDeprecatedSuggestionNode(node) {
142
143
  const current = skipParentheses(node);
143
144
  switch (current.kind) {
144
- case 214 /* SyntaxKind.CallExpression */:
145
- case 171 /* SyntaxKind.Decorator */:
146
- case 215 /* SyntaxKind.NewExpression */:
145
+ case 215 /* SyntaxKind.CallExpression */:
146
+ case 172 /* SyntaxKind.Decorator */:
147
+ case 216 /* SyntaxKind.NewExpression */:
147
148
  return getDeprecatedSuggestionNode(getExpression(current));
148
- case 216 /* SyntaxKind.TaggedTemplateExpression */:
149
+ case 217 /* SyntaxKind.TaggedTemplateExpression */:
149
150
  return getDeprecatedSuggestionNode(current.tag);
150
- case 287 /* SyntaxKind.JsxOpeningElement */:
151
- case 286 /* SyntaxKind.JsxSelfClosingElement */:
151
+ case 288 /* SyntaxKind.JsxOpeningElement */:
152
+ case 287 /* SyntaxKind.JsxSelfClosingElement */:
152
153
  return getDeprecatedSuggestionNode(getTagName(current));
153
- case 213 /* SyntaxKind.ElementAccessExpression */:
154
+ case 214 /* SyntaxKind.ElementAccessExpression */:
154
155
  return current.argumentExpression;
155
- case 212 /* SyntaxKind.PropertyAccessExpression */:
156
+ case 213 /* SyntaxKind.PropertyAccessExpression */:
156
157
  return getName(current);
157
- case 184 /* SyntaxKind.TypeReference */: {
158
+ case 185 /* SyntaxKind.TypeReference */: {
158
159
  const typeName = current.typeName;
159
- if (typeName.kind === 167 /* SyntaxKind.QualifiedName */)
160
+ if (typeName.kind === 168 /* SyntaxKind.QualifiedName */)
160
161
  return typeName.right;
161
162
  }
162
163
  }
@@ -175,7 +176,7 @@ function isUncalledFunctionReference(c, node, symbol) {
175
176
  if (parent === undefined)
176
177
  parent = node.parent;
177
178
  if (isCallLikeExpression(parent))
178
- return ((parent.kind === 214 /* SyntaxKind.CallExpression */ || parent.kind === 215 /* SyntaxKind.NewExpression */) &&
179
+ return ((parent.kind === 215 /* SyntaxKind.CallExpression */ || parent.kind === 216 /* SyntaxKind.NewExpression */) &&
179
180
  node.kind === 79 /* SyntaxKind.Identifier */ &&
180
181
  hasMatchingArgument(c, parent, node));
181
182
  for (const d of getDeclarations(symbol))
@@ -185,35 +186,35 @@ function isUncalledFunctionReference(c, node, symbol) {
185
186
  }
186
187
  function isCallLikeExpression(node) {
187
188
  switch (node.kind) {
188
- case 287 /* SyntaxKind.JsxOpeningElement */:
189
- case 286 /* SyntaxKind.JsxSelfClosingElement */:
190
- case 290 /* SyntaxKind.JsxOpeningFragment */:
191
- case 214 /* SyntaxKind.CallExpression */:
192
- case 215 /* SyntaxKind.NewExpression */:
193
- case 216 /* SyntaxKind.TaggedTemplateExpression */:
194
- case 171 /* SyntaxKind.Decorator */:
189
+ case 288 /* SyntaxKind.JsxOpeningElement */:
190
+ case 287 /* SyntaxKind.JsxSelfClosingElement */:
191
+ case 291 /* SyntaxKind.JsxOpeningFragment */:
192
+ case 215 /* SyntaxKind.CallExpression */:
193
+ case 216 /* SyntaxKind.NewExpression */:
194
+ case 217 /* SyntaxKind.TaggedTemplateExpression */:
195
+ case 172 /* SyntaxKind.Decorator */:
195
196
  return true;
196
- case 227 /* SyntaxKind.BinaryExpression */:
197
+ case 228 /* SyntaxKind.BinaryExpression */:
197
198
  return node.operatorToken.kind === 103 /* SyntaxKind.InstanceOfKeyword */;
198
199
  }
199
200
  return false;
200
201
  }
201
202
  function isFunctionLikeKind(kind) {
202
203
  switch (kind) {
203
- case 263 /* SyntaxKind.FunctionDeclaration */:
204
- case 175 /* SyntaxKind.MethodDeclaration */:
205
- case 177 /* SyntaxKind.Constructor */:
206
- case 178 /* SyntaxKind.GetAccessor */:
207
- case 179 /* SyntaxKind.SetAccessor */:
208
- case 219 /* SyntaxKind.FunctionExpression */:
209
- case 220 /* SyntaxKind.ArrowFunction */:
210
- case 174 /* SyntaxKind.MethodSignature */:
211
- case 180 /* SyntaxKind.CallSignature */:
212
- case 318 /* SyntaxKind.JSDocSignature */:
213
- case 181 /* SyntaxKind.ConstructSignature */:
214
- case 182 /* SyntaxKind.IndexSignature */:
215
- case 185 /* SyntaxKind.FunctionType */:
216
- case 186 /* SyntaxKind.ConstructorType */:
204
+ case 264 /* SyntaxKind.FunctionDeclaration */:
205
+ case 176 /* SyntaxKind.MethodDeclaration */:
206
+ case 178 /* SyntaxKind.Constructor */:
207
+ case 179 /* SyntaxKind.GetAccessor */:
208
+ case 180 /* SyntaxKind.SetAccessor */:
209
+ case 220 /* SyntaxKind.FunctionExpression */:
210
+ case 221 /* SyntaxKind.ArrowFunction */:
211
+ case 175 /* SyntaxKind.MethodSignature */:
212
+ case 181 /* SyntaxKind.CallSignature */:
213
+ case 319 /* SyntaxKind.JSDocSignature */:
214
+ case 182 /* SyntaxKind.ConstructSignature */:
215
+ case 183 /* SyntaxKind.IndexSignature */:
216
+ case 186 /* SyntaxKind.FunctionType */:
217
+ case 187 /* SyntaxKind.ConstructorType */:
217
218
  return true;
218
219
  }
219
220
  return false;
@@ -276,9 +277,9 @@ export function checkDeprecatedIndexSignature(c, right, declaration) {
276
277
  export function checkDeprecatedIndexedAccess(c, accessNode, prop, propName) {
277
278
  if (declarationCount(prop) === 0 || !isDeprecatedSymbol(c, prop) || !isUncalledFunctionReference(c, accessNode, prop))
278
279
  return;
279
- const deprecatedNode = accessNode.kind === 213 /* SyntaxKind.ElementAccessExpression */
280
+ const deprecatedNode = accessNode.kind === 214 /* SyntaxKind.ElementAccessExpression */
280
281
  ? accessNode.argumentExpression
281
- : accessNode.kind === 200 /* SyntaxKind.IndexedAccessType */
282
+ : accessNode.kind === 201 /* SyntaxKind.IndexedAccessType */
282
283
  ? accessNode.indexType
283
284
  : accessNode;
284
285
  addDeprecatedSuggestion(c, deprecatedNode, getDeclarations(prop), propName);
@@ -304,12 +305,32 @@ export function checkDeprecatedImportSpecifier(c, node, symbol) {
304
305
  if (isDeprecatedSymbol(c, targetSymbol) && declarationCount(targetSymbol) !== 0)
305
306
  addDeprecatedSuggestion(c, node, getDeclarations(targetSymbol), targetSymbol.name);
306
307
  }
307
- /** Reports a JSX attribute setting a deprecated property of the element's contextual props type. */
308
- export function checkDeprecatedJsxAttribute(c, contextualType, attribute) {
309
- const name = attribute.name;
310
- if (name.kind !== 79 /* SyntaxKind.Identifier */)
308
+ /** Reports the deprecated properties the checked object literals of `file` set (`checkContextualDeprecations`). */
309
+ export function checkObjectLiteralDeprecations(c, file) {
310
+ const pending = c.objectLiteralsForDeprecations.get(file);
311
+ if (pending === undefined)
311
312
  return;
312
- const prop = getPropertyOfType(c, contextualType, getText(name));
313
- if (prop !== undefined && declarationCount(prop) !== 0 && isDeprecatedSymbol(c, prop))
314
- addDeprecatedSuggestion(c, name, getDeclarations(prop), getText(name));
313
+ c.objectLiteralsForDeprecations.delete(file);
314
+ for (const node of pending)
315
+ checkContextualDeprecations(c, node);
316
+ }
317
+ /**
318
+ * Reports the members of an object literal or the attributes of a JSX element that set a deprecated
319
+ * property of its contextual type. Deferred, so the contextual type of the final check is used.
320
+ */
321
+ export function checkContextualDeprecations(c, node) {
322
+ const contextualType = getApparentTypeOfContextualType(c, node);
323
+ if (contextualType === undefined)
324
+ return;
325
+ for (const property of getProperties(node).nodes) {
326
+ const name = getName(property);
327
+ if (name === undefined || name.kind === 169 /* SyntaxKind.ComputedPropertyName */)
328
+ continue;
329
+ const text = name.kind === 297 /* SyntaxKind.JsxNamespacedName */
330
+ ? name.namespace.text + ':' + name.name.text
331
+ : getText(name);
332
+ const prop = getPropertyOfType(c, contextualType, text);
333
+ if (prop !== undefined && declarationCount(prop) !== 0 && isDeprecatedSymbol(c, prop))
334
+ addDeprecatedSuggestion(c, name, getDeclarations(prop), text);
335
+ }
315
336
  }