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
@@ -5,6 +5,7 @@ import { findConstructorDeclaration, getNameOfDeclaration, getDeclarationOfKind,
5
5
  import { chainDiagnostic } from './diagnostics.js';
6
6
  import { getUseDefineForClassFields } from './options.js';
7
7
  import { createDiagnosticForNode } from './checker.js';
8
+ import { checkJSDocAugmentsTagMatchesExtends } from './checker-jsdoc.js';
8
9
  import { emptyIndexInfos, emptySignatures, newTypeMapper, } from './checker-types.js';
9
10
  import { createAnonymousType, getIntersectionType, isErrorType, typesOf } from './checker-type-factory.js';
10
11
  import { getBaseConstructorTypeOfClass, getBaseTypes, getClassLikeDeclarationOfSymbol, getConstraintOfTypeParameter, getDeclaredTypeOfSymbol, getDefaultFromTypeParameter, getExtendsHeritageClauseElement, getExtendsHeritageClauseElements, getMinTypeArgumentCount, isEntityNameExpression, isMixinConstructorType, isValidBaseType, getDeclaredTypeOfTypeParameter, fillMissingTypeArguments, getInstantiatedConstructorsForTypeArguments, } from './checker-declared-types.js';
@@ -23,7 +24,7 @@ import { hasDynamicName, hasLateBindableName, isBindingPattern } from './checker
23
24
  import { checkTypeAssignableTo, checkTypeRelatedTo, compareProperties, isTypeAssignableTo, isTypeIdenticalTo, } from './relations.js';
24
25
  import { symbolToString, typeToString } from './type-printer.js';
25
26
  import { checkFunctionOrConstructorSymbol } from './checker-overloads.js';
26
- import { isPropertyInitializedInConstructor } from './checker-classes.js';
27
+ import { getConstructorAccessibilityError, isPropertyInitializedInConstructor } from './checker-classes.js';
27
28
  import { declarationCount, getDeclarations, } from './symbol.js';
28
29
  // ---- Classes
29
30
  /** Checks a class's merged declarations, members, base class, implemented types and index signatures. */
@@ -49,19 +50,22 @@ export function checkClassHeritage(c, node) {
49
50
  }
50
51
  checkMembersForOverrideModifier(c, node, classType, typeWithThis, staticType);
51
52
  for (const typeRefNode of getImplementsHeritageClauseElements(node)) {
52
- const expr = getExpression(typeRefNode);
53
- if (!isEntityNameExpression(expr) || isOptionalChain(expr))
54
- c.error(expr, 660 /* Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments */);
53
+ // The parser makes an entity name element a type reference; anything else stays an expression.
54
+ if (typeRefNode.kind === 235 /* SyntaxKind.ExpressionWithTypeArguments */) {
55
+ const expr = getExpression(typeRefNode);
56
+ if (!isEntityNameExpression(expr) || isOptionalChain(expr))
57
+ c.error(expr, 667 /* Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments */);
58
+ }
55
59
  const t = getReducedType(c, getTypeFromTypeNode(c, typeRefNode));
56
60
  if (isErrorType(c, t))
57
61
  continue;
58
62
  if (!isValidBaseType(c, t)) {
59
- c.error(typeRefNode, 592 /* Diagnostics.A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_members */);
63
+ c.error(typeRefNode, 599 /* Diagnostics.A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_members */);
60
64
  continue;
61
65
  }
62
66
  const message = t.symbol !== undefined && (t.symbol.flags & 32 /* SymbolFlags.Class */) !== 0
63
- ? 852 /* Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass */
64
- : 591 /* Diagnostics.Class_0_incorrectly_implements_interface_1 */;
67
+ ? 859 /* Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass */
68
+ : 598 /* Diagnostics.Class_0_incorrectly_implements_interface_1 */;
65
69
  const baseWithThis = getTypeWithThisArgument(c, t, classType.thisType, false);
66
70
  if (!checkTypeAssignableTo(c, typeWithThis, baseWithThis, undefined, undefined))
67
71
  issueMemberSpecificError(c, node, typeWithThis, baseWithThis, message);
@@ -72,8 +76,9 @@ export function checkClassHeritage(c, node) {
72
76
  }
73
77
  function checkBaseClass(c, node, classType, typeWithThis, staticType, baseType) {
74
78
  const baseConstructorType = getBaseConstructorTypeOfClass(c, classType);
75
- const staticBaseType = getApparentType(c, baseConstructorType);
76
79
  const baseTypeNode = getExtendsHeritageClauseElement(node);
80
+ checkJSDocAugmentsTagMatchesExtends(c, node, baseTypeNode, baseType);
81
+ const staticBaseType = getApparentType(c, baseConstructorType);
77
82
  checkBaseTypeAccessibility(c, staticBaseType, baseTypeNode);
78
83
  const typeArgumentNodes = getTypeArguments(baseTypeNode);
79
84
  if (typeArgumentNodes !== undefined && typeArgumentNodes.nodes.length !== 0) {
@@ -86,16 +91,16 @@ function checkBaseClass(c, node, classType, typeWithThis, staticType, baseType)
86
91
  const baseWithThis = getTypeWithThisArgument(c, baseType, classType.thisType, false);
87
92
  const errorNode = getName(node) ?? node;
88
93
  if (!checkTypeAssignableTo(c, typeWithThis, baseWithThis, undefined, undefined))
89
- issueMemberSpecificError(c, node, typeWithThis, baseWithThis, 586 /* Diagnostics.Class_0_incorrectly_extends_base_class_1 */);
94
+ issueMemberSpecificError(c, node, typeWithThis, baseWithThis, 593 /* Diagnostics.Class_0_incorrectly_extends_base_class_1 */);
90
95
  // The static side is checked only when the instance side is assignable.
91
96
  else
92
- checkTypeAssignableTo(c, staticType, getTypeWithoutSignatures(c, staticBaseType), errorNode, 588 /* Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1 */);
97
+ checkTypeAssignableTo(c, staticType, getTypeWithoutSignatures(c, staticBaseType), errorNode, 595 /* Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1 */);
93
98
  if ((baseConstructorType.flags & 34078720 /* TypeFlags.TypeVariable */) !== 0) {
94
99
  if (!isMixinConstructorType(c, staticType))
95
- c.error(errorNode, 701 /* Diagnostics.A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any */);
100
+ c.error(errorNode, 708 /* Diagnostics.A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any */);
96
101
  else if (hasAbstractSignature(getSignaturesOfType(c, baseConstructorType, 1 /* SignatureKind.Construct */)) &&
97
102
  !hasSyntacticModifier(node, 64 /* ModifierFlags.Abstract */))
98
- c.error(errorNode, 929 /* Diagnostics.A_mixin_class_that_extends_from_a_type_variable_containing_an_abstract_construct_signature_must_also_be_declared_abstract */);
103
+ c.error(errorNode, 936 /* Diagnostics.A_mixin_class_that_extends_from_a_type_variable_containing_an_abstract_construct_signature_must_also_be_declared_abstract */);
99
104
  }
100
105
  // A class-like constructor function that isn't a class must return the same type from every
101
106
  // instantiated construct signature.
@@ -104,7 +109,7 @@ function checkBaseClass(c, node, classType, typeWithThis, staticType, baseType)
104
109
  const constructors = getInstantiatedConstructorsForTypeArguments(c, staticBaseType, getTypeArguments(baseTypeNode)?.nodes, baseTypeNode);
105
110
  for (const sig of constructors) {
106
111
  if (!isTypeIdenticalTo(c, getReturnTypeOfSignature(c, sig), baseType)) {
107
- c.error(getExpression(baseTypeNode), 670 /* Diagnostics.Base_constructors_must_all_have_the_same_return_type */);
112
+ c.error(getExpression(baseTypeNode), 677 /* Diagnostics.Base_constructors_must_all_have_the_same_return_type */);
108
113
  break;
109
114
  }
110
115
  }
@@ -147,7 +152,7 @@ export function checkTypeArgumentConstraints(c, node, typeParameters) {
147
152
  }
148
153
  result =
149
154
  result &&
150
- checkTypeAssignableTo(c, typeArguments[i], instantiateType(c, constraint, mapper), i < typeArgumentNodes.length ? typeArgumentNodes[i] : undefined, 520 /* Diagnostics.Type_0_does_not_satisfy_the_constraint_1 */);
155
+ checkTypeAssignableTo(c, typeArguments[i], instantiateType(c, constraint, mapper), i < typeArgumentNodes.length ? typeArgumentNodes[i] : undefined, 527 /* Diagnostics.Type_0_does_not_satisfy_the_constraint_1 */);
151
156
  }
152
157
  return result;
153
158
  }
@@ -169,20 +174,9 @@ function getImplementsHeritageClauseElements(node) {
169
174
  }
170
175
  function checkBaseTypeAccessibility(c, t, node) {
171
176
  const signatures = getSignaturesOfType(c, t, 1 /* SignatureKind.Construct */);
172
- if (signatures.length === 0)
173
- return;
174
- const declaration = signatures[0].declaration;
175
- if (declaration === undefined || !hasSyntacticModifier(declaration, 2 /* ModifierFlags.Private */))
176
- return;
177
- const typeClassDeclaration = t.symbol !== undefined ? getClassLikeDeclarationOfSymbol(t.symbol) : undefined;
178
- if (!isNodeWithinClass(node, typeClassDeclaration))
179
- c.error(node, 809 /* Diagnostics.Cannot_extend_a_class_0_Class_constructor_is_marked_as_private */, getFullyQualifiedName(c, t.symbol));
180
- }
181
- function isNodeWithinClass(node, classDeclaration) {
182
- for (let n = node; n !== undefined; n = n.parent)
183
- if (n === classDeclaration)
184
- return true;
185
- return false;
177
+ const error = getConstructorAccessibilityError(c, node, signatures, 2 /* ModifierFlags.Private */);
178
+ if (error !== undefined)
179
+ c.error(node, 816 /* Diagnostics.Cannot_extend_a_class_0_Class_constructor_is_marked_as_private */, getFullyQualifiedName(c, error.declaringClass.symbol));
186
180
  }
187
181
  /** Reports each incompatible member, or the class as a whole when no member is to blame. */
188
182
  function issueMemberSpecificError(c, node, typeWithThis, baseWithThis, broadMessage) {
@@ -199,7 +193,7 @@ function issueMemberSpecificError(c, node, typeWithThis, baseWithThis, broadMess
199
193
  continue;
200
194
  const diagnostics = [];
201
195
  if (!checkTypeRelatedTo(c, getTypeOfSymbol(c, prop), getTypeOfSymbol(c, baseProp), c.assignableRelation, getName(member) ?? member, undefined, diagnostics)) {
202
- c.addDiagnostic(chainDiagnostic(diagnostics[0], 587 /* Diagnostics.Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2 */, symbolToString(c, declaredProp), typeToString(c, typeWithThis), typeToString(c, baseWithThis)));
196
+ c.addDiagnostic(chainDiagnostic(diagnostics[0], 594 /* Diagnostics.Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2 */, symbolToString(c, declaredProp), typeToString(c, typeWithThis), typeToString(c, baseWithThis)));
203
197
  issuedMemberError = true;
204
198
  }
205
199
  }
@@ -229,7 +223,7 @@ function checkClassForStaticPropertyNameConflicts(c, node) {
229
223
  continue;
230
224
  const memberName = getEffectivePropertyName(c, name);
231
225
  if (memberName === 'name' || memberName === 'length' || memberName === 'caller' || memberName === 'arguments')
232
- c.error(name, 831 /* Diagnostics.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1 */, memberName, symbolToString(c, getSymbolOfDeclaration(c, node)));
226
+ c.error(name, 838 /* Diagnostics.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1 */, memberName, symbolToString(c, getSymbolOfDeclaration(c, node)));
233
227
  }
234
228
  }
235
229
  /** The property name a name denotes: a literal name, or the literal type of a computed name's expression. */
@@ -240,7 +234,7 @@ function getEffectivePropertyName(c, name) {
240
234
  case 8 /* SyntaxKind.NumericLiteral */:
241
235
  case 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */:
242
236
  return getText(name);
243
- case 168 /* SyntaxKind.ComputedPropertyName */: {
237
+ case 169 /* SyntaxKind.ComputedPropertyName */: {
244
238
  const e = getExpression(name);
245
239
  if (e.kind === 10 /* SyntaxKind.StringLiteral */ ||
246
240
  e.kind === 8 /* SyntaxKind.NumericLiteral */ ||
@@ -304,16 +298,16 @@ function checkKindsOfPropertyMemberOverrides(c, t, baseType) {
304
298
  const derivedName = getNameOfDeclaration(derived.valueDeclaration) ?? derived.valueDeclaration;
305
299
  if (basePropertyFlags !== 0 && derivedPropertyFlags !== 0) {
306
300
  // Abstract and interface members, and assignment-declared overrides, may change kind.
307
- if ((base.checkFlags & 262144 /* CheckFlags.Mapped */) !== 0 ||
308
- (derived.valueDeclaration !== undefined && derived.valueDeclaration.kind === 227 /* SyntaxKind.BinaryExpression */) ||
301
+ if ((base.checkFlags & 2097152 /* CheckFlags.Mapped */) !== 0 ||
302
+ (derived.valueDeclaration !== undefined && derived.valueDeclaration.kind === 228 /* SyntaxKind.BinaryExpression */) ||
309
303
  arePropertiesAbstractOrInterface(base, baseDeclarationFlags))
310
304
  continue;
311
305
  const overriddenInstanceProperty = basePropertyFlags !== 4 /* SymbolFlags.Property */ && derivedPropertyFlags === 4 /* SymbolFlags.Property */;
312
306
  const overriddenInstanceAccessor = basePropertyFlags === 4 /* SymbolFlags.Property */ && derivedPropertyFlags !== 4 /* SymbolFlags.Property */;
313
307
  if (overriddenInstanceProperty || overriddenInstanceAccessor)
314
308
  c.error(derivedName, overriddenInstanceProperty
315
- ? 754 /* Diagnostics.X_0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property */
316
- : 755 /* Diagnostics.X_0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor */, symbolToString(c, base), typeToString(c, baseType), typeToString(c, t));
309
+ ? 761 /* Diagnostics.X_0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property */
310
+ : 762 /* Diagnostics.X_0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor */, symbolToString(c, base), typeToString(c, baseType), typeToString(c, t));
317
311
  else if (getUseDefineForClassFields(c.compilerOptions))
318
312
  checkPropertyOverwritesBase(c, t, baseType, base, derived, baseDeclarationFlags, derivedDeclarationFlags);
319
313
  continue;
@@ -324,14 +318,14 @@ function checkKindsOfPropertyMemberOverrides(c, t, baseType) {
324
318
  if (isPrototypeProperty(derived) || (derived.flags & 4 /* SymbolFlags.Property */) !== 0)
325
319
  continue;
326
320
  message =
327
- 593 /* Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor */;
321
+ 600 /* Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor */;
328
322
  }
329
323
  else if ((base.flags & 98304 /* SymbolFlags.Accessor */) !== 0)
330
324
  message =
331
- 595 /* Diagnostics.Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function */;
325
+ 602 /* Diagnostics.Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function */;
332
326
  else
333
327
  message =
334
- 594 /* Diagnostics.Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function */;
328
+ 601 /* Diagnostics.Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function */;
335
329
  c.error(derivedName, message, typeToString(c, baseType), symbolToString(c, base), typeToString(c, t));
336
330
  }
337
331
  if (missing !== undefined)
@@ -351,7 +345,7 @@ function isImplementedByOtherBaseType(c, t, baseType, base) {
351
345
  function checkPropertyOverwritesBase(c, t, baseType, base, derived, baseDeclarationFlags, derivedDeclarationFlags) {
352
346
  let uninitialized;
353
347
  for (const d of getDeclarations(derived)) {
354
- if (d.kind === 173 /* SyntaxKind.PropertyDeclaration */ && getInitializer(d) === undefined) {
348
+ if (d.kind === 174 /* SyntaxKind.PropertyDeclaration */ && getInitializer(d) === undefined) {
355
349
  uninitialized = d;
356
350
  break;
357
351
  }
@@ -372,16 +366,16 @@ function checkPropertyOverwritesBase(c, t, baseType, base, derived, baseDeclarat
372
366
  propName.kind !== 79 /* SyntaxKind.Identifier */ ||
373
367
  !c.strictNullChecks ||
374
368
  !isPropertyInitializedInConstructor(c, propName, t, constructor))
375
- c.error(getNameOfDeclaration(derived.valueDeclaration) ?? derived.valueDeclaration, 756 /* Diagnostics.Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration */, symbolToString(c, base), typeToString(c, baseType));
369
+ c.error(getNameOfDeclaration(derived.valueDeclaration) ?? derived.valueDeclaration, 763 /* Diagnostics.Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration */, symbolToString(c, base), typeToString(c, baseType));
376
370
  }
377
371
  function reportMissingAbstractMembers(c, node, missing) {
378
- const isExpression = node !== undefined && node.kind === 232 /* SyntaxKind.ClassExpression */;
372
+ const isExpression = node !== undefined && node.kind === 233 /* SyntaxKind.ClassExpression */;
379
373
  const properties = missing.properties;
380
374
  if (properties.length === 1) {
381
375
  if (isExpression)
382
- c.error(node, 787 /* Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1 */, properties[0], missing.baseTypeName);
376
+ c.error(node, 794 /* Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1 */, properties[0], missing.baseTypeName);
383
377
  else
384
- c.error(node, 675 /* Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2 */, missing.typeName, properties[0], missing.baseTypeName);
378
+ c.error(node, 682 /* Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2 */, missing.typeName, properties[0], missing.baseTypeName);
385
379
  return;
386
380
  }
387
381
  if (properties.length > 5) {
@@ -391,16 +385,16 @@ function reportMissingAbstractMembers(c, node, missing) {
391
385
  .join(', ');
392
386
  const remaining = String(properties.length - 4);
393
387
  if (isExpression)
394
- c.error(node, 784 /* Diagnostics.Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1_and_2_more */, missing.baseTypeName, listed, remaining);
388
+ c.error(node, 791 /* Diagnostics.Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1_and_2_more */, missing.baseTypeName, listed, remaining);
395
389
  else
396
- c.error(node, 789 /* Diagnostics.Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2_and_3_more */, missing.typeName, missing.baseTypeName, listed, remaining);
390
+ c.error(node, 796 /* Diagnostics.Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2_and_3_more */, missing.typeName, missing.baseTypeName, listed, remaining);
397
391
  return;
398
392
  }
399
393
  const listed = properties.map((p) => "'" + p + "'").join(', ');
400
394
  if (isExpression)
401
- c.error(node, 790 /* Diagnostics.Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1 */, missing.baseTypeName, listed);
395
+ c.error(node, 797 /* Diagnostics.Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1 */, missing.baseTypeName, listed);
402
396
  else
403
- c.error(node, 788 /* Diagnostics.Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2 */, missing.typeName, missing.baseTypeName, listed);
397
+ c.error(node, 795 /* Diagnostics.Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2 */, missing.typeName, missing.baseTypeName, listed);
404
398
  }
405
399
  function arePropertiesAbstractOrInterface(base, baseDeclarationFlags) {
406
400
  // Synthetic (intersection) properties need any declaration to qualify; others need all.
@@ -416,9 +410,9 @@ function arePropertiesAbstractOrInterface(base, baseDeclarationFlags) {
416
410
  return true;
417
411
  }
418
412
  function isPropertyAbstractOrInterface(declaration, baseDeclarationFlags) {
419
- return (declaration.parent.kind === 265 /* SyntaxKind.InterfaceDeclaration */ ||
413
+ return (declaration.parent.kind === 266 /* SyntaxKind.InterfaceDeclaration */ ||
420
414
  ((baseDeclarationFlags & 64 /* ModifierFlags.Abstract */) !== 0 &&
421
- (declaration.kind !== 173 /* SyntaxKind.PropertyDeclaration */ || getInitializer(declaration) === undefined)));
415
+ (declaration.kind !== 174 /* SyntaxKind.PropertyDeclaration */ || getInitializer(declaration) === undefined)));
422
416
  }
423
417
  // ---- `override`
424
418
  function checkMembersForOverrideModifier(c, node, t, typeWithThis, staticType) {
@@ -432,7 +426,7 @@ function checkMembersForOverrideModifier(c, node, t, typeWithThis, staticType) {
432
426
  for (const member of getMembers(node).nodes) {
433
427
  if (hasSyntacticModifier(member, 128 /* ModifierFlags.Ambient */))
434
428
  continue;
435
- if (member.kind === 177 /* SyntaxKind.Constructor */) {
429
+ if (member.kind === 178 /* SyntaxKind.Constructor */) {
436
430
  for (const param of getParameters(member).nodes)
437
431
  if (isParameterPropertyDeclaration(param, member))
438
432
  checkMemberForOverrideModifier(c, node, staticType, baseStaticType, baseWithThis, t, typeWithThis, param);
@@ -447,20 +441,20 @@ function checkMemberForOverrideModifier(c, node, staticType, baseStaticType, bas
447
441
  if (baseWithThis === undefined) {
448
442
  if (memberHasOverrideModifier)
449
443
  c.error(member, isJs
450
- ? 1107 /* Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class */
451
- : 1098 /* Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class */, typeToString(c, t));
444
+ ? 1114 /* Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class */
445
+ : 1105 /* Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class */, typeToString(c, t));
452
446
  return;
453
447
  }
454
448
  const memberSymbol = getSymbolOfDeclaration(c, member);
455
449
  if (memberHasOverrideModifier &&
456
450
  memberSymbol !== undefined &&
457
451
  memberSymbol.valueDeclaration !== undefined &&
458
- member.kind !== 170 /* SyntaxKind.Parameter */ &&
452
+ member.kind !== 171 /* SyntaxKind.Parameter */ &&
459
453
  hasDynamicName(member) &&
460
454
  !hasLateBindableName(c, member)) {
461
455
  c.error(member, isJs
462
- ? 1114 /* Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_name_is_dynamic */
463
- : 1113 /* Diagnostics.This_member_cannot_have_an_override_modifier_because_its_name_is_dynamic */);
456
+ ? 1121 /* Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_name_is_dynamic */
457
+ : 1120 /* Diagnostics.This_member_cannot_have_an_override_modifier_because_its_name_is_dynamic */);
464
458
  return;
465
459
  }
466
460
  if (!memberHasOverrideModifier && c.compilerOptions.noImplicitOverride !== true)
@@ -477,12 +471,12 @@ function checkMemberForOverrideModifier(c, node, staticType, baseStaticType, bas
477
471
  const suggestion = getSpellingSuggestionForName(c, memberSymbol.name, getPropertiesOfType(c, baseType), 106500 /* SymbolFlags.ClassMember */);
478
472
  if (suggestion !== undefined)
479
473
  c.error(member, isJs
480
- ? 1109 /* Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1 */
481
- : 1103 /* Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1 */, typeToString(c, baseWithThis), symbolToString(c, suggestion));
474
+ ? 1116 /* Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1 */
475
+ : 1110 /* Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1 */, typeToString(c, baseWithThis), symbolToString(c, suggestion));
482
476
  else
483
477
  c.error(member, isJs
484
- ? 1108 /* Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0 */
485
- : 1099 /* Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0 */, typeToString(c, baseWithThis));
478
+ ? 1115 /* Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0 */
479
+ : 1106 /* Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0 */, typeToString(c, baseWithThis));
486
480
  return;
487
481
  }
488
482
  if (baseProp === undefined ||
@@ -500,19 +494,19 @@ function checkMemberForOverrideModifier(c, node, staticType, baseStaticType, bas
500
494
  }
501
495
  if (!baseHasAbstract) {
502
496
  let message;
503
- if (member.kind === 170 /* SyntaxKind.Parameter */)
497
+ if (member.kind === 171 /* SyntaxKind.Parameter */)
504
498
  message = isJs
505
- ? 1106 /* Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 */
506
- : 1101 /* Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0 */;
499
+ ? 1113 /* Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 */
500
+ : 1108 /* Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0 */;
507
501
  else
508
502
  message = isJs
509
- ? 1105 /* Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 */
510
- : 1100 /* Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0 */;
503
+ ? 1112 /* Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 */
504
+ : 1107 /* Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0 */;
511
505
  c.error(member, message, typeToString(c, baseWithThis));
512
506
  return;
513
507
  }
514
508
  if (hasSyntacticModifier(member, 64 /* ModifierFlags.Abstract */))
515
- c.error(member, 1102 /* Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0 */, typeToString(c, baseWithThis));
509
+ c.error(member, 1109 /* Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0 */, typeToString(c, baseWithThis));
516
510
  }
517
511
  // ---- Interfaces
518
512
  /** Checks an interface's merged declarations, base interfaces and index signatures, once per symbol. */
@@ -524,22 +518,26 @@ export function checkInterfaceHeritage(c, node) {
524
518
  const links = c.symbolLinks(symbol);
525
519
  if (!links.interfaceChecked) {
526
520
  links.interfaceChecked = true;
521
+ // Reported on the first interface declaration, whichever declaration is checked first.
522
+ const firstName = getName(getDeclarationOfKind(symbol, 266 /* SyntaxKind.InterfaceDeclaration */));
527
523
  const t = getDeclaredTypeOfSymbol(c, symbol);
528
524
  if ((t.flags & 1048576 /* TypeFlags.Object */) !== 0) {
529
525
  const typeWithThis = getTypeWithThisArgument(c, t, undefined, false);
530
526
  // Later checks run only when inherited properties agree.
531
- if (checkInheritedPropertiesAreIdentical(c, t, getName(node))) {
527
+ if (checkInheritedPropertiesAreIdentical(c, t, firstName)) {
532
528
  for (const baseType of getBaseTypes(c, t))
533
- checkTypeAssignableTo(c, typeWithThis, getTypeWithThisArgument(c, baseType, t.thisType, false), getName(node), 598 /* Diagnostics.Interface_0_incorrectly_extends_interface_1 */);
529
+ checkTypeAssignableTo(c, typeWithThis, getTypeWithThisArgument(c, baseType, t.thisType, false), firstName, 605 /* Diagnostics.Interface_0_incorrectly_extends_interface_1 */);
534
530
  checkIndexConstraints(c, t, symbol, false);
535
531
  }
536
532
  }
537
533
  }
538
534
  checkObjectTypeForDuplicateDeclarations(c, node, false);
539
535
  for (const element of getExtendsHeritageClauseElements(node)) {
536
+ if (element.kind !== 235 /* SyntaxKind.ExpressionWithTypeArguments */)
537
+ continue;
540
538
  const expr = getExpression(element);
541
539
  if (!isEntityNameExpression(expr) || isOptionalChain(expr))
542
- c.error(expr, 659 /* Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments */);
540
+ c.error(expr, 666 /* Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments */);
543
541
  }
544
542
  }
545
543
  /** Checks a type literal's index signatures and members after its members are checked. */
@@ -581,8 +579,8 @@ function checkInheritedPropertiesAreIdentical(c, t, typeNode) {
581
579
  identical = false;
582
580
  const typeName1 = typeToString(c, existing.containingType);
583
581
  const typeName2 = typeToString(c, base);
584
- const errorInfo = createDiagnosticForNode(typeNode, 497 /* Diagnostics.Named_property_0_of_types_1_and_2_are_not_identical */, [symbolToString(c, prop), typeName1, typeName2]);
585
- c.addDiagnostic(chainDiagnostic(errorInfo, 498 /* Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2 */, typeToString(c, t), typeName1, typeName2));
582
+ const errorInfo = createDiagnosticForNode(typeNode, 504 /* Diagnostics.Named_property_0_of_types_1_and_2_are_not_identical */, [symbolToString(c, prop), typeName1, typeName2]);
583
+ c.addDiagnostic(chainDiagnostic(errorInfo, 505 /* Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2 */, typeToString(c, t), typeName1, typeName2));
586
584
  }
587
585
  }
588
586
  }
@@ -599,7 +597,7 @@ export function checkTypeParameterListsIdentical(c, symbol) {
599
597
  links.typeParametersChecked = true;
600
598
  const declarations = [];
601
599
  for (const d of getDeclarations(symbol))
602
- if (d.kind === 264 /* SyntaxKind.ClassDeclaration */ || d.kind === 265 /* SyntaxKind.InterfaceDeclaration */)
600
+ if (d.kind === 265 /* SyntaxKind.ClassDeclaration */ || d.kind === 266 /* SyntaxKind.InterfaceDeclaration */)
603
601
  declarations.push(d);
604
602
  if (declarations.length <= 1)
605
603
  return;
@@ -615,7 +613,7 @@ export function checkTypeParameterListsIdentical(c, symbol) {
615
613
  return;
616
614
  const name = symbolToString(c, symbol);
617
615
  for (const d of declarations)
618
- c.error(getName(d), 597 /* Diagnostics.All_declarations_of_0_must_have_identical_type_parameters */, name);
616
+ c.error(getName(d), 604 /* Diagnostics.All_declarations_of_0_must_have_identical_type_parameters */, name);
619
617
  }
620
618
  /** Reports the declarations of an `infer` type parameter declared more than once with different constraints. */
621
619
  export function checkInferTypeParameterDeclarations(c, symbol) {
@@ -628,7 +626,7 @@ export function checkInferTypeParameterDeclarations(c, symbol) {
628
626
  const declarations = [];
629
627
  const typeParameterLists = [];
630
628
  for (const d of getDeclarations(symbol)) {
631
- if (d.kind === 169 /* SyntaxKind.TypeParameter */) {
629
+ if (d.kind === 170 /* SyntaxKind.TypeParameter */) {
632
630
  declarations.push(d);
633
631
  typeParameterLists.push([d]);
634
632
  }
@@ -637,7 +635,7 @@ export function checkInferTypeParameterDeclarations(c, symbol) {
637
635
  return;
638
636
  const name = symbolToString(c, symbol);
639
637
  for (const d of declarations)
640
- c.error(getName(d), 960 /* Diagnostics.All_declarations_of_0_must_have_identical_constraints */, name);
638
+ c.error(getName(d), 967 /* Diagnostics.All_declarations_of_0_must_have_identical_constraints */, name);
641
639
  }
642
640
  function areTypeParametersIdentical(c, lists, targetParameters) {
643
641
  const maxTypeArgumentCount = targetParameters.length;
@@ -675,7 +673,7 @@ export function checkObjectTypeForDuplicateDeclarations(c, node, checkPrivateNam
675
673
  const privateNames = new Map();
676
674
  const nodeInAmbientContext = (node.flags & 8388608 /* NodeFlags.Ambient */) !== 0;
677
675
  for (const member of getMembers(node).nodes) {
678
- if (member.kind === 177 /* SyntaxKind.Constructor */) {
676
+ if (member.kind === 178 /* SyntaxKind.Constructor */) {
679
677
  for (const param of getParameters(member).nodes)
680
678
  if (isParameterPropertyDeclaration(param, member) && !isBindingPattern(getName(param))) {
681
679
  const symbol = getSymbolOfDeclaration(c, param);
@@ -689,15 +687,15 @@ export function checkObjectTypeForDuplicateDeclarations(c, node, checkPrivateNam
689
687
  continue;
690
688
  const memberIsStatic = hasStaticModifier(member);
691
689
  if (!nodeInAmbientContext && memberIsStatic && symbol.name === 'prototype')
692
- c.error(getName(member), 831 /* Diagnostics.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1 */, symbol.name, symbolToString(c, getSymbolOfDeclaration(c, node)));
690
+ c.error(getName(member), 838 /* Diagnostics.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1 */, symbol.name, symbolToString(c, getSymbolOfDeclaration(c, node)));
693
691
  const names = memberIsStatic ? staticNames : instanceNames;
694
692
  const hasAccessorModifier = hasSyntacticModifier(member, 512 /* ModifierFlags.Accessor */);
695
- if ((member.kind === 173 /* SyntaxKind.PropertyDeclaration */ && !hasAccessorModifier) ||
696
- member.kind === 172 /* SyntaxKind.PropertySignature */)
693
+ if ((member.kind === 174 /* SyntaxKind.PropertyDeclaration */ && !hasAccessorModifier) ||
694
+ member.kind === 173 /* SyntaxKind.PropertySignature */)
697
695
  checkPropertyOrAccessor(c, node, names, symbol, 1 /* MemberKind.Property */, memberIsStatic);
698
- else if (member.kind === 178 /* SyntaxKind.GetAccessor */ ||
699
- member.kind === 179 /* SyntaxKind.SetAccessor */ ||
700
- (member.kind === 173 /* SyntaxKind.PropertyDeclaration */ && hasAccessorModifier))
696
+ else if (member.kind === 179 /* SyntaxKind.GetAccessor */ ||
697
+ member.kind === 180 /* SyntaxKind.SetAccessor */ ||
698
+ (member.kind === 174 /* SyntaxKind.PropertyDeclaration */ && hasAccessorModifier))
701
699
  checkPropertyOrAccessor(c, node, names, symbol, 2 /* MemberKind.Accessor */, memberIsStatic);
702
700
  const name = getName(member);
703
701
  if (checkPrivateNames && name !== undefined && name.kind === 80 /* SyntaxKind.PrivateIdentifier */) {
@@ -707,7 +705,7 @@ export function checkObjectTypeForDuplicateDeclarations(c, node, checkPrivateNam
707
705
  flags |= isStatic(member) ? 2 : 1;
708
706
  privateNames.set(symbol.name, flags);
709
707
  if (flags === 3)
710
- reportDuplicateMemberErrors(c, node, symbol.name, false, false, 936 /* Diagnostics.Duplicate_identifier_0_Static_and_instance_elements_cannot_share_the_same_private_name */);
708
+ reportDuplicateMemberErrors(c, node, symbol.name, false, false, 943 /* Diagnostics.Duplicate_identifier_0_Static_and_instance_elements_cannot_share_the_same_private_name */);
711
709
  }
712
710
  }
713
711
  }
@@ -719,13 +717,13 @@ function checkPropertyOrAccessor(c, node, names, symbol, kind, isStaticMember) {
719
717
  names.set(symbol.name, kind);
720
718
  // A second property, or a property combined with an accessor.
721
719
  else if (state === 1 /* MemberKind.Property */ || (state === 2 /* MemberKind.Accessor */ && kind !== 2 /* MemberKind.Accessor */)) {
722
- reportDuplicateMemberErrors(c, node, symbol.name, true, isStaticMember, 478 /* Diagnostics.Duplicate_identifier_0 */);
720
+ reportDuplicateMemberErrors(c, node, symbol.name, true, isStaticMember, 485 /* Diagnostics.Duplicate_identifier_0 */);
723
721
  names.set(symbol.name, 3 /* MemberKind.Reported */);
724
722
  }
725
723
  }
726
724
  function reportDuplicateMemberErrors(c, node, name, checkStatic, isStaticMember, message) {
727
725
  for (const member of getMembers(node).nodes) {
728
- if (member.kind === 177 /* SyntaxKind.Constructor */) {
726
+ if (member.kind === 178 /* SyntaxKind.Constructor */) {
729
727
  for (const param of getParameters(member).nodes) {
730
728
  if (!isParameterPropertyDeclaration(param, member) || isBindingPattern(getName(param)))
731
729
  continue;
@@ -790,10 +788,10 @@ function checkIndexConstraintForProperty(c, t, prop, propNameType, propType) {
790
788
  if (indexInfos.length === 0)
791
789
  return;
792
790
  const interfaceDeclaration = (t.objectFlags & 2 /* ObjectFlags.Interface */) !== 0
793
- ? getDeclarationOfKind(t.symbol, 265 /* SyntaxKind.InterfaceDeclaration */)
791
+ ? getDeclarationOfKind(t.symbol, 266 /* SyntaxKind.InterfaceDeclaration */)
794
792
  : undefined;
795
- const propDeclaration = (declaration !== undefined && declaration.kind === 227 /* SyntaxKind.BinaryExpression */) ||
796
- (name !== undefined && name.kind === 168 /* SyntaxKind.ComputedPropertyName */)
793
+ const propDeclaration = (declaration !== undefined && declaration.kind === 228 /* SyntaxKind.BinaryExpression */) ||
794
+ (name !== undefined && name.kind === 169 /* SyntaxKind.ComputedPropertyName */)
797
795
  ? declaration
798
796
  : undefined;
799
797
  const localPropDeclaration = getParentOfSymbol(c, prop) === t.symbol ? declaration : undefined;
@@ -807,14 +805,14 @@ function checkIndexConstraintForProperty(c, t, prop, propNameType, propType) {
807
805
  errorNode = interfaceDeclaration;
808
806
  if (errorNode === undefined || isTypeAssignableTo(c, propType, info.valueType))
809
807
  continue;
810
- const diagnostic = createDiagnosticForNode(errorNode, 582 /* Diagnostics.Property_0_of_type_1_is_not_assignable_to_2_index_type_3 */, [
808
+ const diagnostic = createDiagnosticForNode(errorNode, 589 /* Diagnostics.Property_0_of_type_1_is_not_assignable_to_2_index_type_3 */, [
811
809
  symbolToString(c, prop),
812
810
  typeToString(c, propType),
813
811
  typeToString(c, info.keyType),
814
812
  typeToString(c, info.valueType),
815
813
  ]);
816
814
  if (propDeclaration !== undefined && errorNode !== propDeclaration)
817
- diagnostic.addRelatedInfo(createDiagnosticForNode(propDeclaration, 860 /* Diagnostics.X_0_is_declared_here */, [symbolToString(c, prop)]));
815
+ diagnostic.addRelatedInfo(createDiagnosticForNode(propDeclaration, 867 /* Diagnostics.X_0_is_declared_here */, [symbolToString(c, prop)]));
818
816
  c.addDiagnostic(diagnostic);
819
817
  }
820
818
  }
@@ -835,7 +833,7 @@ function checkIndexConstraintForIndexSignature(c, t, checkInfo) {
835
833
  if (indexInfos.length === 0)
836
834
  return;
837
835
  const interfaceDeclaration = (t.objectFlags & 2 /* ObjectFlags.Interface */) !== 0
838
- ? getDeclarationOfKind(t.symbol, 265 /* SyntaxKind.InterfaceDeclaration */)
836
+ ? getDeclarationOfKind(t.symbol, 266 /* SyntaxKind.InterfaceDeclaration */)
839
837
  : undefined;
840
838
  const localCheckDeclaration = getLocalIndexDeclaration(c, t, checkInfo);
841
839
  for (const info of indexInfos) {
@@ -847,7 +845,7 @@ function checkIndexConstraintForIndexSignature(c, t, checkInfo) {
847
845
  !someBaseHasIndexTypes(c, t, checkInfo.keyType, info.keyType))
848
846
  errorNode = interfaceDeclaration;
849
847
  if (errorNode !== undefined && !isTypeAssignableTo(c, checkInfo.valueType, info.valueType))
850
- c.error(errorNode, 584 /* Diagnostics.X_0_index_type_1_is_not_assignable_to_2_index_type_3 */, typeToString(c, checkInfo.keyType), typeToString(c, checkInfo.valueType), typeToString(c, info.keyType), typeToString(c, info.valueType));
848
+ c.error(errorNode, 591 /* Diagnostics.X_0_index_type_1_is_not_assignable_to_2_index_type_3 */, typeToString(c, checkInfo.keyType), typeToString(c, checkInfo.valueType), typeToString(c, info.keyType), typeToString(c, info.valueType));
851
849
  }
852
850
  }
853
851
  /** Reports duplicate index signatures of a class or interface, once per symbol. */
@@ -872,7 +870,7 @@ function checkTypeForDuplicateIndexSignatures(c, node) {
872
870
  const keyTypes = [];
873
871
  const declarationsByKey = [];
874
872
  for (const declaration of getDeclarations(indexSymbol)) {
875
- if (declaration.kind !== 182 /* SyntaxKind.IndexSignature */)
873
+ if (declaration.kind !== 183 /* SyntaxKind.IndexSignature */)
876
874
  continue;
877
875
  const parameters = getParameters(declaration).nodes;
878
876
  if (parameters.length !== 1)
@@ -896,6 +894,6 @@ function checkTypeForDuplicateIndexSignatures(c, node) {
896
894
  if (declarationsByKey[i].length <= 1)
897
895
  continue;
898
896
  for (const declaration of declarationsByKey[i])
899
- c.error(declaration, 548 /* Diagnostics.Duplicate_index_signature_for_type_0 */, typeToString(c, keyTypes[i]));
897
+ c.error(declaration, 555 /* Diagnostics.Duplicate_index_signature_for_type_0 */, typeToString(c, keyTypes[i]));
900
898
  }
901
899
  }