tsc-ts 0.0.10 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/README.md +1 -1
  2. package/bin/tsc-ts.js +70 -1
  3. package/dist/api/compiler/ast-utilities.d.ts +19 -1
  4. package/dist/api/compiler/ast-utilities.js +180 -95
  5. package/dist/api/compiler/ast.d.ts +29 -18
  6. package/dist/api/compiler/ast.js +1040 -1007
  7. package/dist/api/compiler/astnav.js +15 -15
  8. package/dist/api/compiler/binder-utilities.js +186 -186
  9. package/dist/api/compiler/binder.js +290 -263
  10. package/dist/api/compiler/character-codes.js +2 -2
  11. package/dist/api/compiler/checker-calls.js +173 -123
  12. package/dist/api/compiler/checker-classes.d.ts +14 -3
  13. package/dist/api/compiler/checker-classes.js +136 -91
  14. package/dist/api/compiler/checker-contextual.d.ts +20 -0
  15. package/dist/api/compiler/checker-contextual.js +175 -62
  16. package/dist/api/compiler/checker-declaration-order.js +79 -79
  17. package/dist/api/compiler/checker-declarations.d.ts +1 -0
  18. package/dist/api/compiler/checker-declarations.js +160 -136
  19. package/dist/api/compiler/checker-declared-types.js +67 -65
  20. package/dist/api/compiler/checker-decorators.js +77 -77
  21. package/dist/api/compiler/checker-deprecation.d.ts +8 -3
  22. package/dist/api/compiler/checker-deprecation.js +76 -55
  23. package/dist/api/compiler/checker-destructuring.js +47 -45
  24. package/dist/api/compiler/checker-elaboration.js +24 -24
  25. package/dist/api/compiler/checker-emit-helpers.js +4 -4
  26. package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
  27. package/dist/api/compiler/checker-emit-resolver.js +25 -13
  28. package/dist/api/compiler/checker-evaluator.js +9 -9
  29. package/dist/api/compiler/checker-expressions.js +258 -212
  30. package/dist/api/compiler/checker-functions.js +113 -107
  31. package/dist/api/compiler/checker-generated-code.d.ts +0 -11
  32. package/dist/api/compiler/checker-generated-code.js +28 -52
  33. package/dist/api/compiler/checker-grammar.d.ts +1 -0
  34. package/dist/api/compiler/checker-grammar.js +469 -438
  35. package/dist/api/compiler/checker-heritage.js +91 -93
  36. package/dist/api/compiler/checker-inference.d.ts +77 -5
  37. package/dist/api/compiler/checker-inference.js +487 -113
  38. package/dist/api/compiler/checker-iteration.d.ts +0 -10
  39. package/dist/api/compiler/checker-iteration.js +35 -52
  40. package/dist/api/compiler/checker-javascript.js +14 -14
  41. package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
  42. package/dist/api/compiler/checker-jsdoc.js +67 -58
  43. package/dist/api/compiler/checker-jsx.js +107 -89
  44. package/dist/api/compiler/checker-members.d.ts +9 -2
  45. package/dist/api/compiler/checker-members.js +210 -74
  46. package/dist/api/compiler/checker-modules.d.ts +15 -6
  47. package/dist/api/compiler/checker-modules.js +469 -309
  48. package/dist/api/compiler/checker-narrowing.js +273 -189
  49. package/dist/api/compiler/checker-object-literals.js +25 -22
  50. package/dist/api/compiler/checker-operators.js +126 -118
  51. package/dist/api/compiler/checker-overloads.js +27 -27
  52. package/dist/api/compiler/checker-property-access.js +59 -55
  53. package/dist/api/compiler/checker-services.d.ts +1 -0
  54. package/dist/api/compiler/checker-services.js +222 -210
  55. package/dist/api/compiler/checker-signatures.js +65 -49
  56. package/dist/api/compiler/checker-source-file.d.ts +5 -0
  57. package/dist/api/compiler/checker-source-file.js +154 -130
  58. package/dist/api/compiler/checker-statements.js +33 -32
  59. package/dist/api/compiler/checker-super.js +50 -50
  60. package/dist/api/compiler/checker-symbol-types.js +109 -93
  61. package/dist/api/compiler/checker-symbols.d.ts +13 -1
  62. package/dist/api/compiler/checker-symbols.js +264 -149
  63. package/dist/api/compiler/checker-type-factory.d.ts +5 -0
  64. package/dist/api/compiler/checker-type-factory.js +190 -46
  65. package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
  66. package/dist/api/compiler/checker-type-nodes.js +179 -141
  67. package/dist/api/compiler/checker-type-operators.d.ts +2 -0
  68. package/dist/api/compiler/checker-type-operators.js +110 -63
  69. package/dist/api/compiler/checker-types.d.ts +80 -3
  70. package/dist/api/compiler/checker-types.js +121 -2
  71. package/dist/api/compiler/checker-unused.js +114 -118
  72. package/dist/api/compiler/checker-utilities.js +11 -11
  73. package/dist/api/compiler/checker.d.ts +97 -31
  74. package/dist/api/compiler/checker.js +149 -35
  75. package/dist/api/compiler/command-line.d.ts +1 -3
  76. package/dist/api/compiler/command-line.js +47 -44
  77. package/dist/api/compiler/compile-program.d.ts +24 -4
  78. package/dist/api/compiler/compile-program.js +53 -26
  79. package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
  80. package/dist/api/compiler/diagnostic-messages.js +128 -122
  81. package/dist/api/compiler/diagnostics.js +7 -7
  82. package/dist/api/compiler/emitter.d.ts +7 -1
  83. package/dist/api/compiler/emitter.js +53 -11
  84. package/dist/api/compiler/expr-record.d.ts +11 -0
  85. package/dist/api/compiler/expr-record.js +53 -0
  86. package/dist/api/compiler/file-include.d.ts +2 -1
  87. package/dist/api/compiler/file-include.js +11 -7
  88. package/dist/api/compiler/file-loader.d.ts +10 -0
  89. package/dist/api/compiler/file-loader.js +138 -41
  90. package/dist/api/compiler/identifier-name.d.ts +9 -0
  91. package/dist/api/compiler/identifier-name.js +10 -0
  92. package/dist/api/compiler/instantiation.d.ts +7 -0
  93. package/dist/api/compiler/instantiation.js +101 -49
  94. package/dist/api/compiler/jsdoc.js +27 -25
  95. package/dist/api/compiler/link-tables.d.ts +48 -18
  96. package/dist/api/compiler/link-tables.js +80 -37
  97. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  98. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  99. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  100. package/dist/api/compiler/locales/de-DE.js +1 -1
  101. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  102. package/dist/api/compiler/locales/es-ES.js +1 -1
  103. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  104. package/dist/api/compiler/locales/fr-FR.js +1 -1
  105. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  106. package/dist/api/compiler/locales/it-IT.js +1 -1
  107. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  108. package/dist/api/compiler/locales/ja-JP.js +1 -1
  109. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  110. package/dist/api/compiler/locales/ko-KR.js +1 -1
  111. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  112. package/dist/api/compiler/locales/pl-PL.js +1 -1
  113. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  114. package/dist/api/compiler/locales/pt-BR.js +1 -1
  115. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  116. package/dist/api/compiler/locales/ru-RU.js +1 -1
  117. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  118. package/dist/api/compiler/locales/tr-TR.js +1 -1
  119. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  120. package/dist/api/compiler/locales/zh-CN.js +1 -1
  121. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  122. package/dist/api/compiler/locales/zh-TW.js +1 -1
  123. package/dist/api/compiler/module-resolution-types.js +6 -6
  124. package/dist/api/compiler/module-resolution.d.ts +10 -1
  125. package/dist/api/compiler/module-resolution.js +115 -84
  126. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  127. package/dist/api/compiler/module-specifiers.js +24 -18
  128. package/dist/api/compiler/name-resolver.js +74 -65
  129. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  130. package/dist/api/compiler/node-builder-names.js +210 -90
  131. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  132. package/dist/api/compiler/node-builder-reuse.js +23 -22
  133. package/dist/api/compiler/node-builder.d.ts +18 -1
  134. package/dist/api/compiler/node-builder.js +191 -102
  135. package/dist/api/compiler/option-declarations.d.ts +2 -6
  136. package/dist/api/compiler/option-declarations.js +315 -375
  137. package/dist/api/compiler/options.d.ts +15 -33
  138. package/dist/api/compiler/options.js +21 -54
  139. package/dist/api/compiler/output-paths.d.ts +4 -1
  140. package/dist/api/compiler/output-paths.js +6 -11
  141. package/dist/api/compiler/package-json.d.ts +3 -3
  142. package/dist/api/compiler/package-json.js +11 -10
  143. package/dist/api/compiler/parser.d.ts +42 -20
  144. package/dist/api/compiler/parser.js +318 -224
  145. package/dist/api/compiler/path.d.ts +9 -0
  146. package/dist/api/compiler/path.js +20 -3
  147. package/dist/api/compiler/printer/emit-context.d.ts +3 -1
  148. package/dist/api/compiler/printer/emit-context.js +16 -1
  149. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  150. package/dist/api/compiler/printer/factory-base.js +7 -3
  151. package/dist/api/compiler/printer/factory.js +6 -3
  152. package/dist/api/compiler/printer/helpers.js +10 -1
  153. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  154. package/dist/api/compiler/printer/name-generator.js +35 -16
  155. package/dist/api/compiler/printer/printer.d.ts +1 -0
  156. package/dist/api/compiler/printer/printer.js +306 -283
  157. package/dist/api/compiler/printer/utilities.js +149 -147
  158. package/dist/api/compiler/program-checker.d.ts +8 -2
  159. package/dist/api/compiler/program-checker.js +84 -34
  160. package/dist/api/compiler/program-utilities.d.ts +3 -1
  161. package/dist/api/compiler/program-utilities.js +28 -15
  162. package/dist/api/compiler/program.d.ts +2 -0
  163. package/dist/api/compiler/program.js +69 -57
  164. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  165. package/dist/api/compiler/pseudo-bigint.js +18 -0
  166. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  167. package/dist/api/compiler/regexp-checker.js +93 -76
  168. package/dist/api/compiler/relations.d.ts +27 -4
  169. package/dist/api/compiler/relations.js +337 -180
  170. package/dist/api/compiler/reparser.js +64 -59
  171. package/dist/api/compiler/scanner.d.ts +27 -2
  172. package/dist/api/compiler/scanner.js +181 -150
  173. package/dist/api/compiler/shared-results.d.ts +696 -0
  174. package/dist/api/compiler/shared-results.js +2905 -0
  175. package/dist/api/compiler/sourcemap.js +2 -2
  176. package/dist/api/compiler/symbol-accessibility.js +87 -74
  177. package/dist/api/compiler/symbol.d.ts +22 -13
  178. package/dist/api/compiler/symbol.js +15 -1
  179. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  180. package/dist/api/compiler/transformers/alias-references.js +247 -139
  181. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  182. package/dist/api/compiler/transformers/async.d.ts +0 -1
  183. package/dist/api/compiler/transformers/async.js +64 -77
  184. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  185. package/dist/api/compiler/transformers/class-fields.js +81 -78
  186. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  187. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  188. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  189. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  190. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  191. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  192. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  193. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  194. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  195. package/dist/api/compiler/transformers/declarations.js +307 -239
  196. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  197. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  198. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  199. package/dist/api/compiler/transformers/destructuring.js +19 -18
  200. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  201. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  202. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  203. package/dist/api/compiler/transformers/for-await.js +25 -25
  204. package/dist/api/compiler/transformers/import-elision.js +14 -14
  205. package/dist/api/compiler/transformers/jsx.js +12 -12
  206. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  207. package/dist/api/compiler/transformers/module.js +8 -8
  208. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  209. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  210. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  211. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  212. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  213. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  214. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  215. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  216. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  217. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  218. package/dist/api/compiler/transformers/using.js +12 -12
  219. package/dist/api/compiler/transformers/utilities.js +77 -77
  220. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  221. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  222. package/dist/api/compiler/tsconfig.d.ts +10 -2
  223. package/dist/api/compiler/tsconfig.js +136 -48
  224. package/dist/api/compiler/type-printer.js +40 -3
  225. package/dist/api/compiler/types.d.ts +2 -1
  226. package/dist/api/library/ast.generated.d.ts +42 -39
  227. package/dist/api/library/ast.generated.js +1 -1
  228. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  229. package/dist/api/library/compiler-options.generated.js +1 -1
  230. package/dist/api/library/disk.js +12 -1
  231. package/dist/api/library/enums.generated.d.ts +206 -206
  232. package/dist/api/library/enums.generated.js +206 -206
  233. package/dist/api/library/nodes.js +26 -26
  234. package/package.json +9 -9
  235. package/src/compiler/ast-utilities.ts +99 -7
  236. package/src/compiler/ast.ts +74 -38
  237. package/src/compiler/binder.ts +39 -4
  238. package/src/compiler/cgroup.ts +157 -0
  239. package/src/compiler/character-codes.ts +2 -2
  240. package/src/compiler/checker-calls.ts +76 -8
  241. package/src/compiler/checker-classes.ts +80 -25
  242. package/src/compiler/checker-contextual.ts +110 -1
  243. package/src/compiler/checker-declarations.ts +31 -4
  244. package/src/compiler/checker-declared-types.ts +8 -5
  245. package/src/compiler/checker-decorators.ts +1 -1
  246. package/src/compiler/checker-deprecation.ts +29 -8
  247. package/src/compiler/checker-destructuring.ts +10 -3
  248. package/src/compiler/checker-emit-helpers.ts +1 -0
  249. package/src/compiler/checker-emit-resolver.ts +16 -6
  250. package/src/compiler/checker-expressions.ts +95 -47
  251. package/src/compiler/checker-functions.ts +21 -6
  252. package/src/compiler/checker-generated-code.ts +2 -22
  253. package/src/compiler/checker-grammar.ts +133 -60
  254. package/src/compiler/checker-heritage.ts +22 -21
  255. package/src/compiler/checker-inference.ts +514 -87
  256. package/src/compiler/checker-iteration.ts +18 -31
  257. package/src/compiler/checker-javascript.ts +1 -1
  258. package/src/compiler/checker-jsdoc.ts +50 -27
  259. package/src/compiler/checker-jsx.ts +28 -5
  260. package/src/compiler/checker-members.ts +197 -55
  261. package/src/compiler/checker-modules.ts +332 -65
  262. package/src/compiler/checker-narrowing.ts +98 -19
  263. package/src/compiler/checker-object-literals.ts +3 -0
  264. package/src/compiler/checker-operators.ts +11 -4
  265. package/src/compiler/checker-property-access.ts +7 -2
  266. package/src/compiler/checker-services.ts +39 -12
  267. package/src/compiler/checker-signatures.ts +15 -1
  268. package/src/compiler/checker-source-file.ts +39 -13
  269. package/src/compiler/checker-statements.ts +3 -2
  270. package/src/compiler/checker-symbol-types.ts +29 -6
  271. package/src/compiler/checker-symbols.ts +158 -15
  272. package/src/compiler/checker-type-factory.ts +173 -35
  273. package/src/compiler/checker-type-nodes.ts +46 -3
  274. package/src/compiler/checker-type-operators.ts +83 -26
  275. package/src/compiler/checker-types.ts +147 -4
  276. package/src/compiler/checker-unused.ts +9 -14
  277. package/src/compiler/checker.ts +175 -41
  278. package/src/compiler/command-line.ts +28 -28
  279. package/src/compiler/compile-program.ts +59 -25
  280. package/src/compiler/decoder.ts +15 -5
  281. package/src/compiler/diagnostic-messages.ts +1973 -1892
  282. package/src/compiler/doctor-report.ts +133 -0
  283. package/src/compiler/emitter.ts +57 -8
  284. package/src/compiler/encoder.ts +23 -8
  285. package/src/compiler/expr-record.ts +59 -0
  286. package/src/compiler/file-include.ts +9 -3
  287. package/src/compiler/file-loader.ts +139 -32
  288. package/src/compiler/help.ts +10 -14
  289. package/src/compiler/identifier-name.ts +13 -0
  290. package/src/compiler/incremental.ts +86 -18
  291. package/src/compiler/init.ts +2 -7
  292. package/src/compiler/instantiation.ts +77 -22
  293. package/src/compiler/jsdoc.ts +7 -3
  294. package/src/compiler/link-tables.ts +82 -37
  295. package/src/compiler/locales/cs-CZ.ts +1 -1
  296. package/src/compiler/locales/de-DE.ts +1 -1
  297. package/src/compiler/locales/es-ES.ts +1 -1
  298. package/src/compiler/locales/fr-FR.ts +1 -1
  299. package/src/compiler/locales/it-IT.ts +1 -1
  300. package/src/compiler/locales/ja-JP.ts +1 -1
  301. package/src/compiler/locales/ko-KR.ts +1 -1
  302. package/src/compiler/locales/pl-PL.ts +1 -1
  303. package/src/compiler/locales/pt-BR.ts +1 -1
  304. package/src/compiler/locales/ru-RU.ts +1 -1
  305. package/src/compiler/locales/tr-TR.ts +1 -1
  306. package/src/compiler/locales/zh-CN.ts +1 -1
  307. package/src/compiler/locales/zh-TW.ts +1 -1
  308. package/src/compiler/module-resolution.ts +44 -8
  309. package/src/compiler/module-specifiers.ts +62 -20
  310. package/src/compiler/name-resolver.ts +9 -1
  311. package/src/compiler/node-builder-names.ts +236 -54
  312. package/src/compiler/node-builder-pseudo.ts +4 -7
  313. package/src/compiler/node-builder-reuse.ts +5 -4
  314. package/src/compiler/node-builder.ts +130 -31
  315. package/src/compiler/option-declarations.ts +33 -103
  316. package/src/compiler/options.ts +23 -62
  317. package/src/compiler/output-paths.ts +5 -18
  318. package/src/compiler/package-entrypoints.ts +345 -0
  319. package/src/compiler/package-json.ts +4 -4
  320. package/src/compiler/parallel-check.ts +543 -147
  321. package/src/compiler/parallel-emit.ts +4 -4
  322. package/src/compiler/parser.ts +166 -47
  323. package/src/compiler/path.ts +22 -2
  324. package/src/compiler/printer/emit-context.ts +16 -0
  325. package/src/compiler/printer/factory-base.ts +10 -3
  326. package/src/compiler/printer/factory.ts +7 -3
  327. package/src/compiler/printer/helpers.ts +10 -1
  328. package/src/compiler/printer/name-generator.ts +24 -2
  329. package/src/compiler/printer/printer.ts +39 -16
  330. package/src/compiler/printer/utilities.ts +8 -2
  331. package/src/compiler/program-checker.ts +53 -5
  332. package/src/compiler/program-utilities.ts +23 -10
  333. package/src/compiler/program.ts +13 -1
  334. package/src/compiler/pseudo-bigint.ts +17 -0
  335. package/src/compiler/regexp-checker.ts +63 -30
  336. package/src/compiler/relations.ts +233 -77
  337. package/src/compiler/reparser.ts +14 -5
  338. package/src/compiler/run-config.ts +1383 -0
  339. package/src/compiler/run-record-read.ts +87 -0
  340. package/src/compiler/run-records.ts +575 -0
  341. package/src/compiler/scanner.ts +166 -120
  342. package/src/compiler/shared-results.ts +3144 -0
  343. package/src/compiler/show-config.ts +18 -1
  344. package/src/compiler/sourcemap.ts +2 -2
  345. package/src/compiler/symbol-accessibility.ts +26 -3
  346. package/src/compiler/symbol.ts +31 -14
  347. package/src/compiler/syntax-kind.ts +188 -187
  348. package/src/compiler/thread-entry.ts +22 -3
  349. package/src/compiler/transformers/alias-references.ts +123 -4
  350. package/src/compiler/transformers/async.ts +2 -17
  351. package/src/compiler/transformers/class-fields.ts +13 -12
  352. package/src/compiler/transformers/commonjs-module.ts +11 -7
  353. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  354. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  355. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  356. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  357. package/src/compiler/transformers/declarations.ts +136 -49
  358. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  359. package/src/compiler/transformers/destructuring.ts +4 -3
  360. package/src/compiler/transformers/external-module-info.ts +1 -1
  361. package/src/compiler/transformers/jsx.ts +2 -1
  362. package/src/compiler/transformers/reference-resolver.ts +83 -19
  363. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  364. package/src/compiler/transformers/syntax-facts.ts +2 -7
  365. package/src/compiler/transformers/type-eraser.ts +10 -1
  366. package/src/compiler/transformers/type-serialization.ts +3 -2
  367. package/src/compiler/transformers/visitor-base.ts +2 -1
  368. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  369. package/src/compiler/tsc-build.ts +67 -6
  370. package/src/compiler/tsc-cli.ts +35 -4
  371. package/src/compiler/tsc-compile.ts +220 -10
  372. package/src/compiler/tsc-watch.ts +97 -47
  373. package/src/compiler/tsconfig.ts +176 -19
  374. package/src/compiler/type-printer.ts +36 -2
  375. package/src/compiler/types.ts +2 -1
  376. package/src/library/ast.generated.ts +57 -41
  377. package/src/library/compiler-options.generated.ts +117 -103
  378. package/src/library/disk.ts +10 -1
  379. package/src/library/enums.generated.ts +196 -196
@@ -9,6 +9,7 @@
9
9
  import { ArrayTypeNode, ArrowFunction, AsExpression, BinaryExpression, CallSignatureDeclaration, ClassDeclaration, ClassExpression, ConstructSignatureDeclaration, ConstructorDeclaration, ConstructorTypeNode, ElementAccessExpression, ExportAssignment, ExpressionStatement, ExpressionWithTypeArguments, FunctionDeclaration, FunctionExpression, FunctionTypeNode, GetAccessorDeclaration, HeritageClause, Identifier, ImportDeclaration, IndexSignatureDeclaration, JSDoc, JSDocAugmentsTag, JSDocCallbackTag, JSDocImplementsTag, JSDocImportTag, JSDocOverloadTag, JSDocParameterOrPropertyTag, JSDocSatisfiesTag, JSDocSignature, JSDocTemplateTag, JSDocThisTag, JSDocTypeExpression, JSDocTypeLiteral, JSDocTypedefTag, JSDocVariadicType, JSDocOptionalType, KeywordTypeNode, MethodDeclaration, MethodSignatureDeclaration, ModifierList, ModuleBlock, ModuleDeclaration, NodeList, NodeVisitor, NumericLiteral, ParameterDeclaration, ParenthesizedExpression, PropertyAccessExpression, PropertyAssignment, PropertyDeclaration, PropertySignatureDeclaration, QualifiedName, ReturnStatement, SatisfiesExpression, SetAccessorDeclaration, ShorthandPropertyAssignment, StringLiteral, Token, TypeAliasDeclaration, TypeLiteralNode, TypeParameterDeclaration, VariableDeclaration, VariableStatement, getComment, getModifiers, getName, getParameters, getText, getType, getTypeExpression, getTypeParameters, FullPropertyAssignment, } from './ast.js';
10
10
  import { isAssignmentOperator, isFunctionLike, isInJSFile, isLeftHandSideExpression, isStringLiteralLike, } from './ast-utilities.js';
11
11
  import { isIdentifierPart, isIdentifierStart } from './character-codes.js';
12
+ import { IdentifierName } from './identifier-name.js';
12
13
  /** Sets the parent of every node in a subtree. */
13
14
  class ParentInChildrenSetter extends NodeVisitor {
14
15
  parent = undefined;
@@ -127,7 +128,7 @@ export class Reparser {
127
128
  type = this.reparseJSDocTypeLiteral(typeExpression);
128
129
  else
129
130
  throw new Error('typedef tag type expression should be a name reference or a type expression');
130
- const typeAlias = new TypeAliasDeclaration(345 /* SyntaxKind.JSTypeAliasDeclaration */, modifiers, name, typeParameters, type);
131
+ const typeAlias = new TypeAliasDeclaration(346 /* SyntaxKind.JSTypeAliasDeclaration */, modifiers, name, typeParameters, type);
131
132
  this.finishReparsedNode(typeAlias, tag);
132
133
  this.attachReparsedJSDoc(typeAlias, jsDoc);
133
134
  p.reparseList.push(this.wrapInJSDocNamespace(fullName, typeAlias, false));
@@ -139,7 +140,7 @@ export class Reparser {
139
140
  const functionType = this.reparseJSDocSignature(tag.typeExpression, tag, jsDoc, tag, undefined);
140
141
  const name = this.cloneTypeAliasName(this.getInnermostNameOfJSDocNamespace(fullName));
141
142
  const typeParameters = this.gatherTypeParameters(jsDoc, true);
142
- const typeAlias = new TypeAliasDeclaration(345 /* SyntaxKind.JSTypeAliasDeclaration */, modifiers, name, typeParameters, functionType);
143
+ const typeAlias = new TypeAliasDeclaration(346 /* SyntaxKind.JSTypeAliasDeclaration */, modifiers, name, typeParameters, functionType);
143
144
  this.finishReparsedNode(typeAlias, tag);
144
145
  this.attachReparsedJSDoc(typeAlias, jsDoc);
145
146
  p.reparseList.push(this.wrapInJSDocNamespace(fullName, typeAlias, false));
@@ -162,16 +163,16 @@ export class Reparser {
162
163
  p.reparsedClones.push(copy);
163
164
  attributes = copy;
164
165
  }
165
- const importDeclaration = new ImportDeclaration(346 /* SyntaxKind.JSImportDeclaration */, undefined, importClause, moduleSpecifier, attributes);
166
+ const importDeclaration = new ImportDeclaration(347 /* SyntaxKind.JSImportDeclaration */, undefined, importClause, moduleSpecifier, attributes);
166
167
  this.finishReparsedNode(importDeclaration, tag);
167
168
  p.reparseList.push(importDeclaration);
168
169
  return true;
169
170
  }
170
171
  if (tag instanceof JSDocOverloadTag) {
171
172
  // Overload signatures only for functions, methods and constructors outside object literals.
172
- if ((parent.kind === 263 /* SyntaxKind.FunctionDeclaration */ ||
173
- parent.kind === 175 /* SyntaxKind.MethodDeclaration */ ||
174
- parent.kind === 177 /* SyntaxKind.Constructor */) &&
173
+ if ((parent.kind === 264 /* SyntaxKind.FunctionDeclaration */ ||
174
+ parent.kind === 176 /* SyntaxKind.MethodDeclaration */ ||
175
+ parent.kind === 178 /* SyntaxKind.Constructor */) &&
175
176
  !p.inObjectLiteralMembers())
176
177
  p.reparseList.push(this.reparseJSDocSignature(tag.typeExpression, parent, jsDoc, tag, getModifiers(parent)));
177
178
  return true;
@@ -207,10 +208,10 @@ export class Reparser {
207
208
  else if (fun instanceof MethodDeclaration) {
208
209
  methodName = this.deepCloneReparse(this.checkNonIdentifierName(fun.name));
209
210
  }
210
- else if (fun.kind !== 177 /* SyntaxKind.Constructor */ && fun.kind !== 331 /* SyntaxKind.JSDocCallbackTag */) {
211
+ else if (fun.kind !== 178 /* SyntaxKind.Constructor */ && fun.kind !== 332 /* SyntaxKind.JSDocCallbackTag */) {
211
212
  throw new Error('Unexpected kind ' + fun.kind);
212
213
  }
213
- const typeParameters = tag.kind !== 331 /* SyntaxKind.JSDocCallbackTag */ ? this.gatherTypeParameters(jsDoc, false) : undefined;
214
+ const typeParameters = tag.kind !== 332 /* SyntaxKind.JSDocCallbackTag */ ? this.gatherTypeParameters(jsDoc, false) : undefined;
214
215
  const parameters = [];
215
216
  const signatureParameters = jsSignature instanceof JSDocSignature ? jsSignature.parameters : undefined;
216
217
  if (signatureParameters !== undefined) {
@@ -219,7 +220,7 @@ export class Reparser {
219
220
  const param = params[pi];
220
221
  let parameter;
221
222
  if (param instanceof JSDocThisTag) {
222
- const thisIdent = new Identifier('this');
223
+ const thisIdent = new Identifier(new IdentifierName('this'));
223
224
  thisIdent.pos = param.pos;
224
225
  thisIdent.end = param.end;
225
226
  thisIdent.flags = p.contextFlags | 8 /* NodeFlags.Reparsed */;
@@ -249,7 +250,7 @@ export class Reparser {
249
250
  let name = param.name;
250
251
  if (name instanceof Identifier && !isValidIdentifier(name.text)) {
251
252
  // Replace invalid characters with `_`, or use `_N` for an empty name, for a valid parameter name.
252
- name = this.addTransformedReparse(new Identifier(sanitizeIdentifier(name.text, pi)), name);
253
+ name = this.addTransformedReparse(new Identifier(new IdentifierName(sanitizeIdentifier(name.text, pi))), name);
253
254
  }
254
255
  else {
255
256
  name = this.addDeepCloneReparse(name);
@@ -348,7 +349,7 @@ export class Reparser {
348
349
  return undefined;
349
350
  for (const tag of tags.nodes) {
350
351
  // With a @typedef or @callback, @template declares the defined type's type parameters.
351
- if (!typedefOrCallback && (tag.kind === 338 /* SyntaxKind.JSDocTypedefTag */ || tag.kind === 331 /* SyntaxKind.JSDocCallbackTag */))
352
+ if (!typedefOrCallback && (tag.kind === 339 /* SyntaxKind.JSDocTypedefTag */ || tag.kind === 332 /* SyntaxKind.JSDocCallbackTag */))
352
353
  return undefined;
353
354
  if (!(tag instanceof JSDocTemplateTag))
354
355
  continue;
@@ -382,13 +383,13 @@ export class Reparser {
382
383
  }
383
384
  reparseHosted(tag, parent, jsDoc) {
384
385
  switch (tag.kind) {
385
- case 336 /* SyntaxKind.JSDocTypeTag */:
386
+ case 337 /* SyntaxKind.JSDocTypeTag */:
386
387
  return this.reparseTypeTag(tag, parent);
387
- case 342 /* SyntaxKind.JSDocSatisfiesTag */:
388
+ case 343 /* SyntaxKind.JSDocSatisfiesTag */:
388
389
  if (tag instanceof JSDocSatisfiesTag)
389
390
  this.reparseSatisfiesTag(tag, parent);
390
391
  return true;
391
- case 337 /* SyntaxKind.JSDocTemplateTag */: {
392
+ case 338 /* SyntaxKind.JSDocTemplateTag */: {
392
393
  const fun = getFunctionLikeHost(parent);
393
394
  if (fun !== undefined) {
394
395
  if (getTypeParameters(fun) === undefined && getFullSignature(fun) === undefined) {
@@ -396,7 +397,7 @@ export class Reparser {
396
397
  this.finishMutatedNode(fun);
397
398
  }
398
399
  }
399
- else if (parent.kind === 264 /* SyntaxKind.ClassDeclaration */ || parent.kind === 232 /* SyntaxKind.ClassExpression */) {
400
+ else if (parent.kind === 265 /* SyntaxKind.ClassDeclaration */ || parent.kind === 233 /* SyntaxKind.ClassExpression */) {
400
401
  if (getClassTypeParameters(parent) === undefined) {
401
402
  setClassTypeParameters(parent, this.gatherTypeParameters(jsDoc, false));
402
403
  this.finishMutatedNode(parent);
@@ -404,7 +405,7 @@ export class Reparser {
404
405
  }
405
406
  return true;
406
407
  }
407
- case 333 /* SyntaxKind.JSDocParameterTag */: {
408
+ case 334 /* SyntaxKind.JSDocParameterTag */: {
408
409
  const fun = getFunctionLikeHost(parent);
409
410
  if (fun !== undefined && getFullSignature(fun) === undefined && tag instanceof JSDocParameterOrPropertyTag) {
410
411
  const param = findMatchingParameter(fun, tag, jsDoc);
@@ -422,7 +423,7 @@ export class Reparser {
422
423
  }
423
424
  return true;
424
425
  }
425
- case 335 /* SyntaxKind.JSDocThisTag */: {
426
+ case 336 /* SyntaxKind.JSDocThisTag */: {
426
427
  const fun = getFunctionLikeHost(parent);
427
428
  if (fun !== undefined && tag instanceof JSDocThisTag) {
428
429
  const parameters = getParameters(fun);
@@ -433,7 +434,7 @@ export class Reparser {
433
434
  firstName.kind !== 109 /* SyntaxKind.ThisKeyword */ &&
434
435
  !(firstName instanceof Identifier && firstName.text === 'this'))) {
435
436
  // tsgo gives the `this` name no location.
436
- const thisParam = new ParameterDeclaration(undefined, undefined, new Identifier('this'), undefined, undefined, undefined);
437
+ const thisParam = new ParameterDeclaration(undefined, undefined, new Identifier(new IdentifierName('this')), undefined, undefined, undefined);
437
438
  thisParam.type = this.addDeepCloneReparse(getType(tag.typeExpression));
438
439
  this.finishReparsedNode(thisParam, tag.tagName);
439
440
  const newParams = [thisParam];
@@ -445,7 +446,7 @@ export class Reparser {
445
446
  }
446
447
  return true;
447
448
  }
448
- case 334 /* SyntaxKind.JSDocReturnTag */: {
449
+ case 335 /* SyntaxKind.JSDocReturnTag */: {
449
450
  const fun = getFunctionLikeHost(parent);
450
451
  if (fun !== undefined && getFullSignature(fun) === undefined) {
451
452
  const typeExpression = getTypeExpression(tag);
@@ -456,17 +457,17 @@ export class Reparser {
456
457
  }
457
458
  return true;
458
459
  }
459
- case 329 /* SyntaxKind.JSDocReadonlyTag */:
460
- case 327 /* SyntaxKind.JSDocPrivateTag */:
461
- case 326 /* SyntaxKind.JSDocPublicTag */:
462
- case 328 /* SyntaxKind.JSDocProtectedTag */:
463
- case 330 /* SyntaxKind.JSDocOverrideTag */:
460
+ case 330 /* SyntaxKind.JSDocReadonlyTag */:
461
+ case 328 /* SyntaxKind.JSDocPrivateTag */:
462
+ case 327 /* SyntaxKind.JSDocPublicTag */:
463
+ case 329 /* SyntaxKind.JSDocProtectedTag */:
464
+ case 331 /* SyntaxKind.JSDocOverrideTag */:
464
465
  return this.reparseModifierTag(tag, parent);
465
- case 324 /* SyntaxKind.JSDocImplementsTag */:
466
+ case 325 /* SyntaxKind.JSDocImplementsTag */:
466
467
  if (tag instanceof JSDocImplementsTag)
467
468
  this.reparseImplementsTag(tag, parent);
468
469
  return true;
469
- case 323 /* SyntaxKind.JSDocAugmentsTag */:
470
+ case 324 /* SyntaxKind.JSDocAugmentsTag */:
470
471
  if (tag instanceof JSDocAugmentsTag)
471
472
  this.reparseAugmentsTag(tag, parent);
472
473
  return true;
@@ -476,7 +477,7 @@ export class Reparser {
476
477
  reparseTypeTag(tag, parent) {
477
478
  const typeExpression = getTypeExpression(tag);
478
479
  switch (parent.kind) {
479
- case 244 /* SyntaxKind.VariableStatement */:
480
+ case 245 /* SyntaxKind.VariableStatement */:
480
481
  if (parent instanceof VariableStatement)
481
482
  for (const declaration of parent.declarationList.declarations.nodes)
482
483
  if (declaration instanceof VariableDeclaration &&
@@ -487,26 +488,26 @@ export class Reparser {
487
488
  return true;
488
489
  }
489
490
  break;
490
- case 261 /* SyntaxKind.VariableDeclaration */:
491
- case 278 /* SyntaxKind.ExportAssignment */:
492
- case 173 /* SyntaxKind.PropertyDeclaration */:
493
- case 303 /* SyntaxKind.PropertyAssignment */:
494
- case 304 /* SyntaxKind.ShorthandPropertyAssignment */:
495
- case 178 /* SyntaxKind.GetAccessor */:
491
+ case 262 /* SyntaxKind.VariableDeclaration */:
492
+ case 279 /* SyntaxKind.ExportAssignment */:
493
+ case 174 /* SyntaxKind.PropertyDeclaration */:
494
+ case 304 /* SyntaxKind.PropertyAssignment */:
495
+ case 305 /* SyntaxKind.ShorthandPropertyAssignment */:
496
+ case 179 /* SyntaxKind.GetAccessor */:
496
497
  if (getType(parent) === undefined && typeExpression !== undefined) {
497
498
  setType(parent, this.addDeepCloneReparse(getType(typeExpression)));
498
499
  this.finishMutatedNode(parent);
499
500
  return true;
500
501
  }
501
502
  break;
502
- case 170 /* SyntaxKind.Parameter */:
503
+ case 171 /* SyntaxKind.Parameter */:
503
504
  if (getType(parent) === undefined && typeExpression !== undefined) {
504
505
  setType(parent, this.reparseJSDocTypeLiteral(getType(typeExpression)));
505
506
  this.finishMutatedNode(parent);
506
507
  return true;
507
508
  }
508
509
  break;
509
- case 245 /* SyntaxKind.ExpressionStatement */:
510
+ case 246 /* SyntaxKind.ExpressionStatement */:
510
511
  if (parent instanceof ExpressionStatement) {
511
512
  const bin = parent.expression;
512
513
  if (bin instanceof BinaryExpression && isAssignmentDeclaration(bin) && typeExpression !== undefined) {
@@ -516,8 +517,8 @@ export class Reparser {
516
517
  }
517
518
  }
518
519
  break;
519
- case 254 /* SyntaxKind.ReturnStatement */:
520
- case 218 /* SyntaxKind.ParenthesizedExpression */: {
520
+ case 255 /* SyntaxKind.ReturnStatement */:
521
+ case 219 /* SyntaxKind.ParenthesizedExpression */: {
521
522
  const expression = getExpressionOfReturnOrParenthesized(parent);
522
523
  if (expression !== undefined && typeExpression !== undefined) {
523
524
  setExpression(parent, this.makeNewCast(this.addDeepCloneReparse(getType(typeExpression)), expression, true));
@@ -560,9 +561,9 @@ export class Reparser {
560
561
  break;
561
562
  }
562
563
  }
563
- else if (parent.kind === 261 /* SyntaxKind.VariableDeclaration */ ||
564
- parent.kind === 173 /* SyntaxKind.PropertyDeclaration */ ||
565
- parent.kind === 303 /* SyntaxKind.PropertyAssignment */) {
564
+ else if (parent.kind === 262 /* SyntaxKind.VariableDeclaration */ ||
565
+ parent.kind === 174 /* SyntaxKind.PropertyDeclaration */ ||
566
+ parent.kind === 304 /* SyntaxKind.PropertyAssignment */) {
566
567
  const initializer = getInitializer(parent);
567
568
  if (initializer !== undefined) {
568
569
  setInitializer(parent, this.makeNewCast(this.addDeepCloneReparse(getType(typeExpression)), initializer, false));
@@ -576,9 +577,9 @@ export class Reparser {
576
577
  this.finishMutatedNode(parent);
577
578
  }
578
579
  }
579
- else if (parent.kind === 254 /* SyntaxKind.ReturnStatement */ ||
580
- parent.kind === 218 /* SyntaxKind.ParenthesizedExpression */ ||
581
- parent.kind === 278 /* SyntaxKind.ExportAssignment */) {
580
+ else if (parent.kind === 255 /* SyntaxKind.ReturnStatement */ ||
581
+ parent.kind === 219 /* SyntaxKind.ParenthesizedExpression */ ||
582
+ parent.kind === 279 /* SyntaxKind.ExportAssignment */) {
582
583
  const expression = getExpressionOfReturnOrParenthesized(parent);
583
584
  if (expression !== undefined) {
584
585
  setExpression(parent, this.makeNewCast(this.addDeepCloneReparse(getType(typeExpression)), expression, false));
@@ -598,32 +599,32 @@ export class Reparser {
598
599
  if (parent instanceof ExpressionStatement)
599
600
  parent = parent.expression;
600
601
  switch (parent.kind) {
601
- case 175 /* SyntaxKind.MethodDeclaration */:
602
- case 178 /* SyntaxKind.GetAccessor */:
603
- case 179 /* SyntaxKind.SetAccessor */:
602
+ case 176 /* SyntaxKind.MethodDeclaration */:
603
+ case 179 /* SyntaxKind.GetAccessor */:
604
+ case 180 /* SyntaxKind.SetAccessor */:
604
605
  // In object literals these aren't class members: reparsed modifiers would cause spurious grammar errors.
605
606
  if (this.p.inObjectLiteralMembers())
606
607
  return false;
607
608
  break;
608
- case 173 /* SyntaxKind.PropertyDeclaration */:
609
- case 177 /* SyntaxKind.Constructor */:
610
- case 227 /* SyntaxKind.BinaryExpression */:
609
+ case 174 /* SyntaxKind.PropertyDeclaration */:
610
+ case 178 /* SyntaxKind.Constructor */:
611
+ case 228 /* SyntaxKind.BinaryExpression */:
611
612
  break;
612
613
  default:
613
614
  return false;
614
615
  }
615
616
  let keyword = 0 /* SyntaxKind.Unknown */;
616
617
  switch (tag.kind) {
617
- case 329 /* SyntaxKind.JSDocReadonlyTag */:
618
+ case 330 /* SyntaxKind.JSDocReadonlyTag */:
618
619
  keyword = 148 /* SyntaxKind.ReadonlyKeyword */;
619
620
  break;
620
- case 327 /* SyntaxKind.JSDocPrivateTag */:
621
+ case 328 /* SyntaxKind.JSDocPrivateTag */:
621
622
  keyword = 122 /* SyntaxKind.PrivateKeyword */;
622
623
  break;
623
- case 326 /* SyntaxKind.JSDocPublicTag */:
624
+ case 327 /* SyntaxKind.JSDocPublicTag */:
624
625
  keyword = 124 /* SyntaxKind.PublicKeyword */;
625
626
  break;
626
- case 328 /* SyntaxKind.JSDocProtectedTag */:
627
+ case 329 /* SyntaxKind.JSDocProtectedTag */:
627
628
  keyword = 123 /* SyntaxKind.ProtectedKeyword */;
628
629
  break;
629
630
  default:
@@ -648,7 +649,7 @@ export class Reparser {
648
649
  return true;
649
650
  }
650
651
  reparseImplementsTag(tag, parent) {
651
- if (parent.kind !== 264 /* SyntaxKind.ClassDeclaration */ && parent.kind !== 232 /* SyntaxKind.ClassExpression */)
652
+ if (parent.kind !== 265 /* SyntaxKind.ClassDeclaration */ && parent.kind !== 233 /* SyntaxKind.ClassExpression */)
652
653
  return false;
653
654
  const className = tag.className;
654
655
  const heritageClauses = getHeritageClauses(parent);
@@ -688,10 +689,14 @@ export class Reparser {
688
689
  return false;
689
690
  const target = clause.types.nodes[0];
690
691
  const source = tag.className;
692
+ // The tag's type arguments apply to an `extends` clause without any: one naming the same
693
+ // entity, or another expression such as a call (`extends mixin(Base)`), but not `null`.
691
694
  if (target instanceof ExpressionWithTypeArguments &&
692
- hasSamePropertyAccessName(target.expression, source.expression) &&
693
695
  target.typeArguments === undefined &&
694
- source.typeArguments !== undefined) {
696
+ source.typeArguments !== undefined &&
697
+ target.expression.kind !== 105 /* SyntaxKind.NullKeyword */ &&
698
+ (!isEntityNameExpression(target.expression, false) ||
699
+ hasSamePropertyAccessName(target.expression, source.expression))) {
695
700
  const newArguments = [];
696
701
  for (const arg of source.typeArguments.nodes)
697
702
  newArguments.push(this.addDeepCloneReparse(arg));
@@ -748,7 +753,7 @@ export class Reparser {
748
753
  const block = new ModuleBlock(this.p.newNodeList(fullName.pos, fullName.end, [wrapped]));
749
754
  this.finishReparsedNode(block, fullName);
750
755
  const modifiers = nested ? this.createExportModifier(fullName) : undefined;
751
- const result = new ModuleDeclaration(modifiers, 145 /* SyntaxKind.NamespaceKeyword */, this.addDeepCloneReparse(fullName.name), block);
756
+ const result = new ModuleDeclaration(modifiers, 145 /* SyntaxKind.NamespaceKeyword */, this.addDeepCloneReparse(fullName.name), undefined, block);
752
757
  this.finishReparsedNode(result, fullName);
753
758
  this.p.reparsedClones.push(result);
754
759
  return result;
@@ -760,7 +765,7 @@ function findMatchingParameter(fun, parameterTag, jsDoc) {
760
765
  let paramCount = -1;
761
766
  if (jsDoc.tags !== undefined)
762
767
  for (const tag of jsDoc.tags.nodes)
763
- if (tag.kind === 333 /* SyntaxKind.JSDocParameterTag */) {
768
+ if (tag.kind === 334 /* SyntaxKind.JSDocParameterTag */) {
764
769
  paramCount++;
765
770
  if (tag === parameterTag) {
766
771
  tagIndex = paramCount;
@@ -816,7 +821,7 @@ function getFunctionLikeHost(host) {
816
821
  fun = first instanceof VariableDeclaration ? first.initializer : undefined;
817
822
  }
818
823
  }
819
- else if (host.kind === 303 /* SyntaxKind.PropertyAssignment */ || host.kind === 173 /* SyntaxKind.PropertyDeclaration */) {
824
+ else if (host.kind === 304 /* SyntaxKind.PropertyAssignment */ || host.kind === 174 /* SyntaxKind.PropertyDeclaration */) {
820
825
  fun = getInitializer(host);
821
826
  }
822
827
  else if (host instanceof ExportAssignment) {
@@ -1,3 +1,4 @@
1
+ import { IdentifierName } from './identifier-name.js';
1
2
  import type { DiagnosticMessage } from './diagnostics.js';
2
3
  import { EscapeSequenceScanningFlags, RegularExpressionFlags } from './regexp-checker.js';
3
4
  import { SyntaxKind } from './syntax-kind.js';
@@ -60,6 +61,7 @@ export declare class Scanner {
60
61
  /** @internal */ tokenFlags: TokenFlags;
61
62
  /** @internal */ tokenValue: string;
62
63
  /** @internal */ valueStart: number;
64
+ private tokenName;
63
65
  /** @internal */ valueEnd: number;
64
66
  private valueHash;
65
67
  private hashStart;
@@ -68,6 +70,7 @@ export declare class Scanner {
68
70
  /** @internal */ skipJSDocLeadingAsterisks: number;
69
71
  private readonly cutUnits;
70
72
  private readonly identifiers;
73
+ private lastEntry;
71
74
  private loadedBlocks;
72
75
  private textKind;
73
76
  private lineFeedFrom;
@@ -113,6 +116,11 @@ export declare class Scanner {
113
116
  recordIdentifierValue(text: string): boolean;
114
117
  /** @internal Like `getTokenValue`, but identifiers with the same text share one string. */
115
118
  getIdentifierValue(): string;
119
+ /**
120
+ * The identifier value as a name that identifiers with the same text share, after
121
+ * `getIdentifierValue`; a cooked value (with escapes) gets a name of its own.
122
+ */
123
+ getIdentifierName(): IdentifierName;
116
124
  getCommentDirectives(): readonly CommentDirective[];
117
125
  hasUnicodeEscape(): boolean;
118
126
  hasExtendedUnicodeEscape(): boolean;
@@ -172,10 +180,19 @@ export declare class Scanner {
172
180
  /** Scans a merge conflict marker; returns true if it is skipped as trivia. */
173
181
  private scanConflictMarker;
174
182
  private processCommentDirective;
175
- /** @internal Scans an identifier after `prefixLength` units; sets the token value. */
176
- scanIdentifier(prefixLength: number): boolean;
183
+ /**
184
+ * @internal Scans an identifier after `prefixLength` units; sets the token value. `variant`
185
+ * decides the identifier parts: JSX and JSDoc names also take `-`, and regular expression group
186
+ * names take a surrogate pair written as two `\u` escapes.
187
+ */
188
+ scanIdentifier(prefixLength: number, variant: IdentifierVariant): boolean;
177
189
  /** Scans identifier parts including `\u` escapes and returns their cooked text. */
178
190
  private scanIdentifierParts;
191
+ /**
192
+ * At `\`: scans a `\u` escape of an identifier start (`isStart`) or part and returns its code point,
193
+ * or returns -1 and leaves the scanner unchanged.
194
+ */
195
+ private scanIdentifierEscape;
179
196
  private scanInvalidCharacter;
180
197
  /** Scans a quoted string and sets its cooked value. */
181
198
  private scanString;
@@ -238,6 +255,14 @@ export declare class Scanner {
238
255
  canFollowJSDocAt(): boolean;
239
256
  scanJSDocToken(): SyntaxKind;
240
257
  }
258
+ /** Which characters an identifier scan takes after its start. */
259
+ export declare const enum IdentifierVariant {
260
+ Standard = 0,
261
+ /** JSX and JSDoc names, which take `-`. */
262
+ JSX = 1,
263
+ /** Regular expression group names, which take a surrogate pair written as two `\u` escapes. */
264
+ RegExpGroupName = 2
265
+ }
241
266
  /** Whether `text` has a `<<<<<<<`, `|||||||`, `=======` or `>>>>>>>` marker at `pos`. */
242
267
  export declare function isConflictMarkerTrivia(text: string, pos: number): boolean;
243
268
  /** The `#!` line at the start of `text`, or `''`. */