tsc-ts 0.0.10 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/README.md +1 -1
  2. package/bin/tsc-ts.js +70 -1
  3. package/dist/api/compiler/ast-utilities.d.ts +19 -1
  4. package/dist/api/compiler/ast-utilities.js +180 -95
  5. package/dist/api/compiler/ast.d.ts +20 -15
  6. package/dist/api/compiler/ast.js +1023 -995
  7. package/dist/api/compiler/astnav.js +15 -15
  8. package/dist/api/compiler/binder-utilities.js +186 -186
  9. package/dist/api/compiler/binder.js +290 -263
  10. package/dist/api/compiler/character-codes.js +2 -2
  11. package/dist/api/compiler/checker-calls.js +173 -123
  12. package/dist/api/compiler/checker-classes.d.ts +14 -3
  13. package/dist/api/compiler/checker-classes.js +134 -90
  14. package/dist/api/compiler/checker-contextual.js +64 -61
  15. package/dist/api/compiler/checker-declaration-order.js +79 -79
  16. package/dist/api/compiler/checker-declarations.d.ts +1 -0
  17. package/dist/api/compiler/checker-declarations.js +160 -136
  18. package/dist/api/compiler/checker-declared-types.js +67 -65
  19. package/dist/api/compiler/checker-decorators.js +77 -77
  20. package/dist/api/compiler/checker-deprecation.d.ts +8 -3
  21. package/dist/api/compiler/checker-deprecation.js +76 -55
  22. package/dist/api/compiler/checker-destructuring.js +47 -45
  23. package/dist/api/compiler/checker-elaboration.js +24 -24
  24. package/dist/api/compiler/checker-emit-helpers.js +4 -4
  25. package/dist/api/compiler/checker-emit-resolver.d.ts +4 -2
  26. package/dist/api/compiler/checker-emit-resolver.js +25 -13
  27. package/dist/api/compiler/checker-evaluator.js +9 -9
  28. package/dist/api/compiler/checker-expressions.js +244 -211
  29. package/dist/api/compiler/checker-functions.js +113 -107
  30. package/dist/api/compiler/checker-generated-code.d.ts +0 -11
  31. package/dist/api/compiler/checker-generated-code.js +28 -52
  32. package/dist/api/compiler/checker-grammar.d.ts +1 -0
  33. package/dist/api/compiler/checker-grammar.js +469 -438
  34. package/dist/api/compiler/checker-heritage.js +91 -93
  35. package/dist/api/compiler/checker-inference.d.ts +77 -5
  36. package/dist/api/compiler/checker-inference.js +487 -113
  37. package/dist/api/compiler/checker-iteration.d.ts +0 -10
  38. package/dist/api/compiler/checker-iteration.js +35 -52
  39. package/dist/api/compiler/checker-javascript.js +14 -14
  40. package/dist/api/compiler/checker-jsdoc.d.ts +8 -10
  41. package/dist/api/compiler/checker-jsdoc.js +67 -58
  42. package/dist/api/compiler/checker-jsx.js +105 -88
  43. package/dist/api/compiler/checker-members.d.ts +9 -2
  44. package/dist/api/compiler/checker-members.js +210 -74
  45. package/dist/api/compiler/checker-modules.d.ts +15 -6
  46. package/dist/api/compiler/checker-modules.js +469 -309
  47. package/dist/api/compiler/checker-narrowing.js +273 -189
  48. package/dist/api/compiler/checker-object-literals.js +25 -22
  49. package/dist/api/compiler/checker-operators.js +126 -118
  50. package/dist/api/compiler/checker-overloads.js +27 -27
  51. package/dist/api/compiler/checker-property-access.js +59 -55
  52. package/dist/api/compiler/checker-services.d.ts +1 -0
  53. package/dist/api/compiler/checker-services.js +222 -210
  54. package/dist/api/compiler/checker-signatures.js +65 -49
  55. package/dist/api/compiler/checker-source-file.d.ts +5 -0
  56. package/dist/api/compiler/checker-source-file.js +154 -130
  57. package/dist/api/compiler/checker-statements.js +33 -32
  58. package/dist/api/compiler/checker-super.js +50 -50
  59. package/dist/api/compiler/checker-symbol-types.js +109 -93
  60. package/dist/api/compiler/checker-symbols.d.ts +13 -1
  61. package/dist/api/compiler/checker-symbols.js +264 -149
  62. package/dist/api/compiler/checker-type-factory.d.ts +5 -0
  63. package/dist/api/compiler/checker-type-factory.js +137 -34
  64. package/dist/api/compiler/checker-type-nodes.d.ts +1 -0
  65. package/dist/api/compiler/checker-type-nodes.js +179 -141
  66. package/dist/api/compiler/checker-type-operators.d.ts +2 -0
  67. package/dist/api/compiler/checker-type-operators.js +110 -63
  68. package/dist/api/compiler/checker-types.d.ts +80 -3
  69. package/dist/api/compiler/checker-types.js +121 -2
  70. package/dist/api/compiler/checker-unused.js +114 -118
  71. package/dist/api/compiler/checker-utilities.js +11 -11
  72. package/dist/api/compiler/checker.d.ts +93 -31
  73. package/dist/api/compiler/checker.js +143 -35
  74. package/dist/api/compiler/command-line.d.ts +1 -3
  75. package/dist/api/compiler/command-line.js +47 -44
  76. package/dist/api/compiler/compile-program.d.ts +19 -4
  77. package/dist/api/compiler/compile-program.js +45 -26
  78. package/dist/api/compiler/diagnostic-messages.d.ts +1849 -1774
  79. package/dist/api/compiler/diagnostic-messages.js +128 -122
  80. package/dist/api/compiler/diagnostics.js +7 -7
  81. package/dist/api/compiler/emitter.d.ts +7 -1
  82. package/dist/api/compiler/emitter.js +53 -11
  83. package/dist/api/compiler/file-include.d.ts +2 -1
  84. package/dist/api/compiler/file-include.js +11 -7
  85. package/dist/api/compiler/file-loader.d.ts +10 -0
  86. package/dist/api/compiler/file-loader.js +138 -41
  87. package/dist/api/compiler/instantiation.d.ts +7 -0
  88. package/dist/api/compiler/instantiation.js +101 -49
  89. package/dist/api/compiler/jsdoc.js +23 -23
  90. package/dist/api/compiler/link-tables.d.ts +48 -18
  91. package/dist/api/compiler/link-tables.js +80 -37
  92. package/dist/api/compiler/locales/cs-CZ.d.ts +1 -1
  93. package/dist/api/compiler/locales/cs-CZ.js +1 -1
  94. package/dist/api/compiler/locales/de-DE.d.ts +1 -1
  95. package/dist/api/compiler/locales/de-DE.js +1 -1
  96. package/dist/api/compiler/locales/es-ES.d.ts +1 -1
  97. package/dist/api/compiler/locales/es-ES.js +1 -1
  98. package/dist/api/compiler/locales/fr-FR.d.ts +1 -1
  99. package/dist/api/compiler/locales/fr-FR.js +1 -1
  100. package/dist/api/compiler/locales/it-IT.d.ts +1 -1
  101. package/dist/api/compiler/locales/it-IT.js +1 -1
  102. package/dist/api/compiler/locales/ja-JP.d.ts +1 -1
  103. package/dist/api/compiler/locales/ja-JP.js +1 -1
  104. package/dist/api/compiler/locales/ko-KR.d.ts +1 -1
  105. package/dist/api/compiler/locales/ko-KR.js +1 -1
  106. package/dist/api/compiler/locales/pl-PL.d.ts +1 -1
  107. package/dist/api/compiler/locales/pl-PL.js +1 -1
  108. package/dist/api/compiler/locales/pt-BR.d.ts +1 -1
  109. package/dist/api/compiler/locales/pt-BR.js +1 -1
  110. package/dist/api/compiler/locales/ru-RU.d.ts +1 -1
  111. package/dist/api/compiler/locales/ru-RU.js +1 -1
  112. package/dist/api/compiler/locales/tr-TR.d.ts +1 -1
  113. package/dist/api/compiler/locales/tr-TR.js +1 -1
  114. package/dist/api/compiler/locales/zh-CN.d.ts +1 -1
  115. package/dist/api/compiler/locales/zh-CN.js +1 -1
  116. package/dist/api/compiler/locales/zh-TW.d.ts +1 -1
  117. package/dist/api/compiler/locales/zh-TW.js +1 -1
  118. package/dist/api/compiler/module-resolution-types.js +6 -6
  119. package/dist/api/compiler/module-resolution.d.ts +10 -1
  120. package/dist/api/compiler/module-resolution.js +115 -84
  121. package/dist/api/compiler/module-specifiers.d.ts +15 -0
  122. package/dist/api/compiler/module-specifiers.js +24 -18
  123. package/dist/api/compiler/name-resolver.js +74 -65
  124. package/dist/api/compiler/node-builder-names.d.ts +11 -3
  125. package/dist/api/compiler/node-builder-names.js +210 -90
  126. package/dist/api/compiler/node-builder-pseudo.js +29 -31
  127. package/dist/api/compiler/node-builder-reuse.js +23 -22
  128. package/dist/api/compiler/node-builder.d.ts +18 -1
  129. package/dist/api/compiler/node-builder.js +191 -102
  130. package/dist/api/compiler/option-declarations.d.ts +2 -6
  131. package/dist/api/compiler/option-declarations.js +315 -375
  132. package/dist/api/compiler/options.d.ts +15 -33
  133. package/dist/api/compiler/options.js +21 -54
  134. package/dist/api/compiler/output-paths.d.ts +4 -1
  135. package/dist/api/compiler/output-paths.js +6 -11
  136. package/dist/api/compiler/package-json.d.ts +3 -3
  137. package/dist/api/compiler/package-json.js +11 -10
  138. package/dist/api/compiler/parser.d.ts +40 -19
  139. package/dist/api/compiler/parser.js +308 -216
  140. package/dist/api/compiler/path.d.ts +9 -0
  141. package/dist/api/compiler/path.js +20 -3
  142. package/dist/api/compiler/printer/emit-context.d.ts +3 -1
  143. package/dist/api/compiler/printer/emit-context.js +16 -1
  144. package/dist/api/compiler/printer/factory-base.d.ts +2 -2
  145. package/dist/api/compiler/printer/factory-base.js +7 -3
  146. package/dist/api/compiler/printer/factory.js +3 -1
  147. package/dist/api/compiler/printer/helpers.js +10 -1
  148. package/dist/api/compiler/printer/name-generator.d.ts +1 -1
  149. package/dist/api/compiler/printer/name-generator.js +35 -16
  150. package/dist/api/compiler/printer/printer.d.ts +1 -0
  151. package/dist/api/compiler/printer/printer.js +303 -281
  152. package/dist/api/compiler/printer/utilities.js +149 -147
  153. package/dist/api/compiler/program-checker.d.ts +8 -2
  154. package/dist/api/compiler/program-checker.js +84 -34
  155. package/dist/api/compiler/program-utilities.d.ts +3 -1
  156. package/dist/api/compiler/program-utilities.js +28 -15
  157. package/dist/api/compiler/program.d.ts +2 -0
  158. package/dist/api/compiler/program.js +69 -57
  159. package/dist/api/compiler/pseudo-bigint.d.ts +2 -0
  160. package/dist/api/compiler/pseudo-bigint.js +18 -0
  161. package/dist/api/compiler/regexp-checker.d.ts +1 -1
  162. package/dist/api/compiler/regexp-checker.js +93 -76
  163. package/dist/api/compiler/relations.d.ts +27 -4
  164. package/dist/api/compiler/relations.js +337 -180
  165. package/dist/api/compiler/reparser.js +60 -56
  166. package/dist/api/compiler/scanner.d.ts +19 -2
  167. package/dist/api/compiler/scanner.js +123 -108
  168. package/dist/api/compiler/shared-results.d.ts +463 -0
  169. package/dist/api/compiler/shared-results.js +2128 -0
  170. package/dist/api/compiler/sourcemap.js +2 -2
  171. package/dist/api/compiler/symbol-accessibility.js +87 -74
  172. package/dist/api/compiler/symbol.d.ts +22 -13
  173. package/dist/api/compiler/symbol.js +15 -1
  174. package/dist/api/compiler/syntax-kind.d.ts +198 -197
  175. package/dist/api/compiler/transformers/alias-references.js +247 -139
  176. package/dist/api/compiler/transformers/async-utilities.js +25 -25
  177. package/dist/api/compiler/transformers/async.d.ts +0 -1
  178. package/dist/api/compiler/transformers/async.js +64 -77
  179. package/dist/api/compiler/transformers/class-fields.d.ts +1 -0
  180. package/dist/api/compiler/transformers/class-fields.js +81 -78
  181. package/dist/api/compiler/transformers/commonjs-module.js +18 -15
  182. package/dist/api/compiler/transformers/const-enum-inliner.js +1 -1
  183. package/dist/api/compiler/transformers/declarations-diagnostics.js +247 -244
  184. package/dist/api/compiler/transformers/declarations-pseudo.js +100 -100
  185. package/dist/api/compiler/transformers/declarations-resolver.d.ts +0 -3
  186. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +1 -2
  187. package/dist/api/compiler/transformers/declarations-syntactic.js +134 -156
  188. package/dist/api/compiler/transformers/declarations-tracker.js +18 -18
  189. package/dist/api/compiler/transformers/declarations.d.ts +4 -1
  190. package/dist/api/compiler/transformers/declarations.js +305 -238
  191. package/dist/api/compiler/transformers/decorator-metadata.d.ts +1 -1
  192. package/dist/api/compiler/transformers/decorator-metadata.js +53 -45
  193. package/dist/api/compiler/transformers/decorator-utilities.js +24 -24
  194. package/dist/api/compiler/transformers/destructuring.js +19 -18
  195. package/dist/api/compiler/transformers/emit-resolver.js +1 -1
  196. package/dist/api/compiler/transformers/es-decorators.js +55 -55
  197. package/dist/api/compiler/transformers/external-module-info.js +3 -3
  198. package/dist/api/compiler/transformers/for-await.js +25 -25
  199. package/dist/api/compiler/transformers/import-elision.js +14 -14
  200. package/dist/api/compiler/transformers/jsx.js +12 -12
  201. package/dist/api/compiler/transformers/legacy-decorators.js +17 -17
  202. package/dist/api/compiler/transformers/module.js +8 -8
  203. package/dist/api/compiler/transformers/named-evaluation.js +4 -4
  204. package/dist/api/compiler/transformers/object-rest-spread.js +20 -20
  205. package/dist/api/compiler/transformers/optional-chain.js +10 -10
  206. package/dist/api/compiler/transformers/reference-resolver.d.ts +12 -1
  207. package/dist/api/compiler/transformers/reference-resolver.js +131 -69
  208. package/dist/api/compiler/transformers/runtime-syntax.js +35 -31
  209. package/dist/api/compiler/transformers/subtree-facts.js +47 -47
  210. package/dist/api/compiler/transformers/syntax-facts.js +56 -58
  211. package/dist/api/compiler/transformers/type-eraser.js +73 -66
  212. package/dist/api/compiler/transformers/type-serialization.js +24 -24
  213. package/dist/api/compiler/transformers/using.js +12 -12
  214. package/dist/api/compiler/transformers/utilities.js +77 -77
  215. package/dist/api/compiler/transformers/visitor-base.js +172 -172
  216. package/dist/api/compiler/transformers/visitor-hooks.js +6 -2
  217. package/dist/api/compiler/tsconfig.d.ts +10 -2
  218. package/dist/api/compiler/tsconfig.js +136 -48
  219. package/dist/api/compiler/type-printer.js +40 -3
  220. package/dist/api/compiler/types.d.ts +2 -1
  221. package/dist/api/library/ast.generated.d.ts +42 -39
  222. package/dist/api/library/ast.generated.js +1 -1
  223. package/dist/api/library/compiler-options.generated.d.ts +111 -100
  224. package/dist/api/library/compiler-options.generated.js +1 -1
  225. package/dist/api/library/disk.js +12 -1
  226. package/dist/api/library/enums.generated.d.ts +206 -206
  227. package/dist/api/library/enums.generated.js +206 -206
  228. package/dist/api/library/nodes.js +26 -26
  229. package/package.json +9 -9
  230. package/src/compiler/ast-utilities.ts +99 -7
  231. package/src/compiler/ast.ts +55 -26
  232. package/src/compiler/binder.ts +39 -4
  233. package/src/compiler/character-codes.ts +2 -2
  234. package/src/compiler/checker-calls.ts +76 -8
  235. package/src/compiler/checker-classes.ts +78 -24
  236. package/src/compiler/checker-contextual.ts +6 -1
  237. package/src/compiler/checker-declarations.ts +31 -4
  238. package/src/compiler/checker-declared-types.ts +8 -5
  239. package/src/compiler/checker-decorators.ts +1 -1
  240. package/src/compiler/checker-deprecation.ts +29 -8
  241. package/src/compiler/checker-destructuring.ts +10 -3
  242. package/src/compiler/checker-emit-helpers.ts +1 -0
  243. package/src/compiler/checker-emit-resolver.ts +16 -6
  244. package/src/compiler/checker-expressions.ts +79 -46
  245. package/src/compiler/checker-functions.ts +21 -6
  246. package/src/compiler/checker-generated-code.ts +2 -22
  247. package/src/compiler/checker-grammar.ts +133 -60
  248. package/src/compiler/checker-heritage.ts +22 -21
  249. package/src/compiler/checker-inference.ts +514 -87
  250. package/src/compiler/checker-iteration.ts +18 -31
  251. package/src/compiler/checker-javascript.ts +1 -1
  252. package/src/compiler/checker-jsdoc.ts +50 -27
  253. package/src/compiler/checker-jsx.ts +26 -4
  254. package/src/compiler/checker-members.ts +197 -55
  255. package/src/compiler/checker-modules.ts +332 -65
  256. package/src/compiler/checker-narrowing.ts +98 -19
  257. package/src/compiler/checker-object-literals.ts +3 -0
  258. package/src/compiler/checker-operators.ts +11 -4
  259. package/src/compiler/checker-property-access.ts +7 -2
  260. package/src/compiler/checker-services.ts +39 -12
  261. package/src/compiler/checker-signatures.ts +15 -1
  262. package/src/compiler/checker-source-file.ts +39 -13
  263. package/src/compiler/checker-statements.ts +3 -2
  264. package/src/compiler/checker-symbol-types.ts +29 -6
  265. package/src/compiler/checker-symbols.ts +158 -15
  266. package/src/compiler/checker-type-factory.ts +120 -21
  267. package/src/compiler/checker-type-nodes.ts +46 -3
  268. package/src/compiler/checker-type-operators.ts +83 -26
  269. package/src/compiler/checker-types.ts +147 -4
  270. package/src/compiler/checker-unused.ts +9 -14
  271. package/src/compiler/checker.ts +168 -41
  272. package/src/compiler/command-line.ts +28 -28
  273. package/src/compiler/compile-program.ts +51 -25
  274. package/src/compiler/decoder.ts +13 -4
  275. package/src/compiler/diagnostic-messages.ts +1973 -1892
  276. package/src/compiler/emitter.ts +57 -8
  277. package/src/compiler/encoder.ts +23 -8
  278. package/src/compiler/file-include.ts +9 -3
  279. package/src/compiler/file-loader.ts +139 -32
  280. package/src/compiler/help.ts +10 -14
  281. package/src/compiler/incremental.ts +86 -18
  282. package/src/compiler/init.ts +2 -7
  283. package/src/compiler/instantiation.ts +77 -22
  284. package/src/compiler/jsdoc.ts +3 -1
  285. package/src/compiler/link-tables.ts +82 -37
  286. package/src/compiler/locales/cs-CZ.ts +1 -1
  287. package/src/compiler/locales/de-DE.ts +1 -1
  288. package/src/compiler/locales/es-ES.ts +1 -1
  289. package/src/compiler/locales/fr-FR.ts +1 -1
  290. package/src/compiler/locales/it-IT.ts +1 -1
  291. package/src/compiler/locales/ja-JP.ts +1 -1
  292. package/src/compiler/locales/ko-KR.ts +1 -1
  293. package/src/compiler/locales/pl-PL.ts +1 -1
  294. package/src/compiler/locales/pt-BR.ts +1 -1
  295. package/src/compiler/locales/ru-RU.ts +1 -1
  296. package/src/compiler/locales/tr-TR.ts +1 -1
  297. package/src/compiler/locales/zh-CN.ts +1 -1
  298. package/src/compiler/locales/zh-TW.ts +1 -1
  299. package/src/compiler/module-resolution.ts +44 -8
  300. package/src/compiler/module-specifiers.ts +62 -20
  301. package/src/compiler/name-resolver.ts +9 -1
  302. package/src/compiler/node-builder-names.ts +236 -54
  303. package/src/compiler/node-builder-pseudo.ts +4 -7
  304. package/src/compiler/node-builder-reuse.ts +5 -4
  305. package/src/compiler/node-builder.ts +130 -31
  306. package/src/compiler/option-declarations.ts +33 -103
  307. package/src/compiler/options.ts +23 -62
  308. package/src/compiler/output-paths.ts +5 -18
  309. package/src/compiler/package-entrypoints.ts +345 -0
  310. package/src/compiler/package-json.ts +4 -4
  311. package/src/compiler/parallel-check.ts +197 -8
  312. package/src/compiler/parallel-emit.ts +1 -1
  313. package/src/compiler/parser.ts +156 -39
  314. package/src/compiler/path.ts +22 -2
  315. package/src/compiler/printer/emit-context.ts +16 -0
  316. package/src/compiler/printer/factory-base.ts +10 -3
  317. package/src/compiler/printer/factory.ts +4 -1
  318. package/src/compiler/printer/helpers.ts +10 -1
  319. package/src/compiler/printer/name-generator.ts +24 -2
  320. package/src/compiler/printer/printer.ts +35 -14
  321. package/src/compiler/printer/utilities.ts +8 -2
  322. package/src/compiler/program-checker.ts +53 -5
  323. package/src/compiler/program-utilities.ts +23 -10
  324. package/src/compiler/program.ts +13 -1
  325. package/src/compiler/pseudo-bigint.ts +17 -0
  326. package/src/compiler/regexp-checker.ts +63 -30
  327. package/src/compiler/relations.ts +233 -77
  328. package/src/compiler/reparser.ts +7 -2
  329. package/src/compiler/scanner.ts +109 -79
  330. package/src/compiler/shared-results.ts +2414 -0
  331. package/src/compiler/show-config.ts +18 -1
  332. package/src/compiler/sourcemap.ts +2 -2
  333. package/src/compiler/symbol-accessibility.ts +26 -3
  334. package/src/compiler/symbol.ts +31 -14
  335. package/src/compiler/syntax-kind.ts +188 -187
  336. package/src/compiler/thread-entry.ts +19 -2
  337. package/src/compiler/transformers/alias-references.ts +123 -4
  338. package/src/compiler/transformers/async.ts +2 -17
  339. package/src/compiler/transformers/class-fields.ts +13 -12
  340. package/src/compiler/transformers/commonjs-module.ts +11 -7
  341. package/src/compiler/transformers/declarations-diagnostics.ts +5 -3
  342. package/src/compiler/transformers/declarations-pseudo.ts +2 -4
  343. package/src/compiler/transformers/declarations-resolver.ts +0 -3
  344. package/src/compiler/transformers/declarations-syntactic.ts +1 -21
  345. package/src/compiler/transformers/declarations.ts +134 -48
  346. package/src/compiler/transformers/decorator-metadata.ts +9 -1
  347. package/src/compiler/transformers/destructuring.ts +4 -3
  348. package/src/compiler/transformers/external-module-info.ts +1 -1
  349. package/src/compiler/transformers/jsx.ts +2 -1
  350. package/src/compiler/transformers/reference-resolver.ts +83 -19
  351. package/src/compiler/transformers/runtime-syntax.ts +6 -1
  352. package/src/compiler/transformers/syntax-facts.ts +2 -7
  353. package/src/compiler/transformers/type-eraser.ts +10 -1
  354. package/src/compiler/transformers/type-serialization.ts +3 -2
  355. package/src/compiler/transformers/visitor-base.ts +2 -1
  356. package/src/compiler/transformers/visitor-hooks.ts +9 -4
  357. package/src/compiler/tsc-build.ts +3 -0
  358. package/src/compiler/tsc-cli.ts +2 -0
  359. package/src/compiler/tsc-compile.ts +7 -2
  360. package/src/compiler/tsc-watch.ts +74 -45
  361. package/src/compiler/tsconfig.ts +176 -19
  362. package/src/compiler/type-printer.ts +36 -2
  363. package/src/compiler/types.ts +2 -1
  364. package/src/library/ast.generated.ts +57 -41
  365. package/src/library/compiler-options.generated.ts +117 -103
  366. package/src/library/disk.ts +10 -1
  367. package/src/library/enums.generated.ts +196 -196
@@ -166,7 +166,7 @@ function setValueDeclaration(symbol, node) {
166
166
  if (current === undefined ||
167
167
  (!((node.flags & 8388608 /* NodeFlags.Ambient */) !== 0 && (current.flags & 8388608 /* NodeFlags.Ambient */) === 0) &&
168
168
  current.kind !== node.kind &&
169
- current.kind === 268 /* SyntaxKind.ModuleDeclaration */))
169
+ current.kind === 269 /* SyntaxKind.ModuleDeclaration */))
170
170
  symbol.valueDeclaration = node;
171
171
  return true;
172
172
  }
@@ -327,7 +327,7 @@ export class ReferenceResolver {
327
327
  getReferencedExportContainer(node, prefixLocals) {
328
328
  const parent = node.parent;
329
329
  const startInDeclarationContainer = parent !== undefined &&
330
- (parent.kind === 268 /* SyntaxKind.ModuleDeclaration */ || parent.kind === 267 /* SyntaxKind.EnumDeclaration */) &&
330
+ (parent.kind === 269 /* SyntaxKind.ModuleDeclaration */ || parent.kind === 268 /* SyntaxKind.EnumDeclaration */) &&
331
331
  isSameNode(getName(parent), node);
332
332
  let symbol = this.getReferencedValueSymbol(node, startInDeclarationContainer);
333
333
  if (symbol === undefined)
@@ -349,10 +349,10 @@ export class ReferenceResolver {
349
349
  const valueDeclaration = parentSymbol.valueDeclaration;
350
350
  if ((parentSymbol.flags & 512 /* SymbolFlags.ValueModule */) !== 0 &&
351
351
  valueDeclaration !== undefined &&
352
- valueDeclaration.kind === 307 /* SyntaxKind.SourceFile */)
352
+ valueDeclaration.kind === 308 /* SyntaxKind.SourceFile */)
353
353
  return valueDeclaration === getSourceFileOfNode(node) ? valueDeclaration : undefined;
354
354
  for (let current = node.parent; current !== undefined; current = current.parent) {
355
- if ((current.kind === 268 /* SyntaxKind.ModuleDeclaration */ || current.kind === 267 /* SyntaxKind.EnumDeclaration */) &&
355
+ if ((current.kind === 269 /* SyntaxKind.ModuleDeclaration */ || current.kind === 268 /* SyntaxKind.EnumDeclaration */) &&
356
356
  this.getSymbolOfDeclaration(current) === parentSymbol)
357
357
  return current;
358
358
  }
@@ -433,28 +433,41 @@ export class ReferenceResolver {
433
433
  if (imported === undefined || moduleDeclaration === undefined)
434
434
  return false;
435
435
  const moduleSymbol = this.resolveModuleSpecifier(declaration, getModuleSpecifierOf(moduleDeclaration));
436
- return moduleSymbol !== undefined && this.isExportedThroughTypeOnlyStar(moduleSymbol, imported, new Set());
436
+ return moduleSymbol !== undefined && this.isExportedThroughTypeOnlyStar(moduleSymbol, imported);
437
437
  }
438
- /** Whether a module's export `name` comes from another module through an `export type *` on the way. */
439
- isExportedThroughTypeOnlyStar(moduleSymbol, name, visited) {
440
- if (visited.has(moduleSymbol))
438
+ /**
439
+ * Whether a module's export `name` comes from another module through an `export type *`, as tsgo's
440
+ * getExportsOfModuleWorker decides: a module reached through a type-only `export *` has its exports marked, and a
441
+ * module reached without one, even if already visited, clears the mark of its own exports.
442
+ */
443
+ isExportedThroughTypeOnlyStar(moduleSymbol, name) {
444
+ if (name === "default" /* InternalSymbolName.Default */)
441
445
  return false;
442
- visited.add(moduleSymbol);
443
- const exports = moduleSymbol.exports;
444
- if (exports === undefined || exports.has(name) || name === "default" /* InternalSymbolName.Default */)
446
+ const walk = new TypeOnlyStarWalk(name);
447
+ this.visitExportStars(walk, moduleSymbol, false, false);
448
+ return walk.typeOnly && !walk.nonTypeOnly;
449
+ }
450
+ /** Visits a module of an `export *` walk; returns whether it exports the walk's name. */
451
+ visitExportStars(walk, symbol, starIsTypeOnly, isTypeOnly) {
452
+ const exports = symbol === undefined ? undefined : symbol.exports;
453
+ if (!isTypeOnly && exports !== undefined && exports.has(walk.name))
454
+ walk.nonTypeOnly = true;
455
+ if (symbol === undefined || exports === undefined || walk.visited.has(symbol))
445
456
  return false;
457
+ walk.visited.add(symbol);
458
+ let found = exports.has(walk.name);
446
459
  const star = exports.get("\uFFFEexport" /* InternalSymbolName.ExportStar */);
447
- if (star === undefined)
448
- return false;
449
- for (const declaration of getDeclarations(star)) {
450
- if (!(declaration instanceof ExportDeclaration))
451
- continue;
452
- const target = this.resolveExternalModuleSymbol(this.resolveModuleSpecifier(declaration, declaration.moduleSpecifier));
453
- if (target === undefined || this.getExportFromTable(target, name, new Set()) === undefined)
454
- continue;
455
- return declaration.isTypeOnly || this.isExportedThroughTypeOnlyStar(target, name, visited);
456
- }
457
- return false;
460
+ if (star !== undefined)
461
+ for (const declaration of getDeclarations(star)) {
462
+ if (!(declaration instanceof ExportDeclaration))
463
+ continue;
464
+ const target = this.resolveExternalModuleSymbol(this.resolveModuleSpecifier(declaration, declaration.moduleSpecifier));
465
+ if (this.visitExportStars(walk, target, declaration.isTypeOnly, isTypeOnly || declaration.isTypeOnly))
466
+ found = true;
467
+ }
468
+ if (starIsTypeOnly && found)
469
+ walk.typeOnly = true;
470
+ return found;
458
471
  }
459
472
  /** Whether a symbol is declared in the global scope. */
460
473
  isGlobalSymbol(symbol) {
@@ -605,7 +618,7 @@ export class ReferenceResolver {
605
618
  }
606
619
  if (node instanceof ExportAssignment) {
607
620
  const expression = node.expression;
608
- if (expression.kind === 79 /* SyntaxKind.Identifier */ || expression.kind === 212 /* SyntaxKind.PropertyAccessExpression */)
621
+ if (expression.kind === 79 /* SyntaxKind.Identifier */ || expression.kind === 213 /* SyntaxKind.PropertyAccessExpression */)
609
622
  return this.resolveEntityName(expression, 111551 /* SymbolFlags.Value */ | 788968 /* SymbolFlags.Type */ | 1920 /* SymbolFlags.Namespace */, true);
610
623
  return getSymbol(node);
611
624
  }
@@ -614,7 +627,7 @@ export class ReferenceResolver {
614
627
  /** The module an implicit import of `file`, such as the JSX runtime, refers to. */
615
628
  resolveImplicitImport(file, name) {
616
629
  const specifier = new StringLiteral(name, 0 /* TokenFlags.None */);
617
- const declaration = new ImportDeclaration(273 /* SyntaxKind.ImportDeclaration */, undefined, undefined, specifier, undefined);
630
+ const declaration = new ImportDeclaration(274 /* SyntaxKind.ImportDeclaration */, undefined, undefined, specifier, undefined);
618
631
  specifier.parent = declaration;
619
632
  declaration.parent = file;
620
633
  return this.resolveModuleSpecifier(specifier, specifier);
@@ -698,7 +711,7 @@ export class ReferenceResolver {
698
711
  const resolved = this.resolveName(name, name.text, meaning | 2097152 /* SymbolFlags.Alias */);
699
712
  symbol = resolved === undefined ? undefined : this.getMergedSymbol(resolved);
700
713
  }
701
- else if (name.kind === 167 /* SyntaxKind.QualifiedName */ || name.kind === 212 /* SyntaxKind.PropertyAccessExpression */) {
714
+ else if (name.kind === 168 /* SyntaxKind.QualifiedName */ || name.kind === 213 /* SyntaxKind.PropertyAccessExpression */) {
702
715
  const left = entityNameLeft(name);
703
716
  const right = entityNameRight(name);
704
717
  if (left === undefined || !(right instanceof Identifier))
@@ -730,6 +743,40 @@ export class ReferenceResolver {
730
743
  return symbol;
731
744
  }
732
745
  // Constant values
746
+ /**
747
+ * The symbol an entity name expression such as `E.A` refers to as an expression: tsgo takes the symbol its checker
748
+ * resolves the expression to, where each name on the left is a value, so a local `let E` hides a const enum `E`.
749
+ */
750
+ resolveValueEntityName(name) {
751
+ let symbol;
752
+ if (name instanceof Identifier) {
753
+ const resolved = this.resolveName(name, name.text, 111551 /* SymbolFlags.Value */ | 2097152 /* SymbolFlags.Alias */);
754
+ symbol = resolved === undefined ? undefined : this.getMergedSymbol(resolved);
755
+ }
756
+ else if (name instanceof PropertyAccessExpression) {
757
+ const left = this.resolveValueEntityName(name.expression);
758
+ const right = name.name;
759
+ if (left === undefined || !(right instanceof Identifier))
760
+ return undefined;
761
+ let member = left.exports === undefined ? undefined : left.exports.get(right.text);
762
+ // A namespace merged with an alias also has the members of what the alias names, as its type does.
763
+ if (member === undefined && (left.flags & 2097152 /* SymbolFlags.Alias */) !== 0) {
764
+ const target = this.resolveAlias(left);
765
+ const targetExports = target === undefined ? undefined : target.exports;
766
+ if (targetExports !== undefined)
767
+ member = targetExports.get(right.text);
768
+ }
769
+ if (member === undefined || (member.flags & (111551 /* SymbolFlags.Value */ | 2097152 /* SymbolFlags.Alias */)) === 0)
770
+ return undefined;
771
+ symbol = this.getMergedSymbol(member);
772
+ }
773
+ else
774
+ return undefined;
775
+ if (symbol === undefined || (symbol.flags & 2097152 /* SymbolFlags.Alias */) === 0)
776
+ return symbol;
777
+ const target = this.resolveAlias(symbol);
778
+ return target === undefined ? undefined : this.getMergedSymbol(target);
779
+ }
733
780
  /** The value of an enum member, computing the values of its whole declaration. */
734
781
  getEnumMemberValue(member) {
735
782
  const declaration = member.parent;
@@ -745,12 +792,12 @@ export class ReferenceResolver {
745
792
  let symbol;
746
793
  if (node instanceof PropertyAccessExpression) {
747
794
  if (isEntityNameExpressionNode(node))
748
- symbol = this.resolveEntityName(node, 111551 /* SymbolFlags.Value */, false);
795
+ symbol = this.resolveValueEntityName(node);
749
796
  }
750
797
  else if (node instanceof ElementAccessExpression) {
751
798
  const argument = stringLiteralText(node.argumentExpression);
752
799
  if (isEntityNameExpressionNode(node.expression) && argument !== undefined) {
753
- const root = this.resolveEntityName(node.expression, 111551 /* SymbolFlags.Value */, false);
800
+ const root = this.resolveValueEntityName(node.expression);
754
801
  const exports = root === undefined ? undefined : root.exports;
755
802
  const member = exports === undefined ? undefined : exports.get(argument);
756
803
  if (member !== undefined)
@@ -1003,7 +1050,7 @@ function isDeclaredBeforeUse(declaration, usage) {
1003
1050
  if ((usage.flags & (4194304 /* NodeFlags.JSDoc */ | 8388608 /* NodeFlags.Ambient */)) !== 0)
1004
1051
  return true;
1005
1052
  if (declaration.pos <= usage.pos) {
1006
- if (declaration.kind === 209 /* SyntaxKind.BindingElement */) {
1053
+ if (declaration.kind === 210 /* SyntaxKind.BindingElement */) {
1007
1054
  const root = getRootDeclaration(declaration);
1008
1055
  return root === declaration || isDeclaredBeforeUse(root, usage);
1009
1056
  }
@@ -1033,12 +1080,12 @@ function isInInitializerOf(declaration, usage) {
1033
1080
  function getDeclarationContainer(node) {
1034
1081
  for (let current = getRootDeclaration(node); current !== undefined; current = current.parent) {
1035
1082
  switch (current.kind) {
1036
- case 261 /* SyntaxKind.VariableDeclaration */:
1037
- case 262 /* SyntaxKind.VariableDeclarationList */:
1038
- case 277 /* SyntaxKind.ImportSpecifier */:
1039
- case 276 /* SyntaxKind.NamedImports */:
1040
- case 275 /* SyntaxKind.NamespaceImport */:
1041
- case 274 /* SyntaxKind.ImportClause */:
1083
+ case 262 /* SyntaxKind.VariableDeclaration */:
1084
+ case 263 /* SyntaxKind.VariableDeclarationList */:
1085
+ case 278 /* SyntaxKind.ImportSpecifier */:
1086
+ case 277 /* SyntaxKind.NamedImports */:
1087
+ case 276 /* SyntaxKind.NamespaceImport */:
1088
+ case 275 /* SyntaxKind.ImportClause */:
1042
1089
  continue;
1043
1090
  }
1044
1091
  return current.parent;
@@ -1054,16 +1101,16 @@ function isNonLocalAlias(symbol, excludes) {
1054
1101
  }
1055
1102
  function isAliasSymbolDeclaration(node) {
1056
1103
  switch (node.kind) {
1057
- case 272 /* SyntaxKind.ImportEqualsDeclaration */:
1058
- case 271 /* SyntaxKind.NamespaceExportDeclaration */:
1059
- case 275 /* SyntaxKind.NamespaceImport */:
1060
- case 281 /* SyntaxKind.NamespaceExport */:
1061
- case 277 /* SyntaxKind.ImportSpecifier */:
1062
- case 282 /* SyntaxKind.ExportSpecifier */:
1104
+ case 273 /* SyntaxKind.ImportEqualsDeclaration */:
1105
+ case 272 /* SyntaxKind.NamespaceExportDeclaration */:
1106
+ case 276 /* SyntaxKind.NamespaceImport */:
1107
+ case 282 /* SyntaxKind.NamespaceExport */:
1108
+ case 278 /* SyntaxKind.ImportSpecifier */:
1109
+ case 283 /* SyntaxKind.ExportSpecifier */:
1063
1110
  return true;
1064
- case 274 /* SyntaxKind.ImportClause */:
1111
+ case 275 /* SyntaxKind.ImportClause */:
1065
1112
  return node instanceof ImportClause && node.name !== undefined;
1066
- case 278 /* SyntaxKind.ExportAssignment */:
1113
+ case 279 /* SyntaxKind.ExportAssignment */:
1067
1114
  return true;
1068
1115
  }
1069
1116
  return false;
@@ -1076,28 +1123,43 @@ export function getDeclarationOfAliasSymbol(symbol) {
1076
1123
  }
1077
1124
  return undefined;
1078
1125
  }
1126
+ /** The state of `isExportedThroughTypeOnlyStar`'s walk over the `export *` declarations of modules for one name. */
1127
+ class TypeOnlyStarWalk {
1128
+ name;
1129
+ visited;
1130
+ /** Whether a module reached through a type-only `export *` exports the name. */
1131
+ typeOnly;
1132
+ /** Whether a module reached without one exports the name itself. */
1133
+ nonTypeOnly;
1134
+ constructor(name) {
1135
+ this.name = name;
1136
+ this.visited = new Set();
1137
+ this.typeOnly = false;
1138
+ this.nonTypeOnly = false;
1139
+ }
1140
+ }
1079
1141
  function isTypeOnlyAlias(symbol) {
1080
1142
  let node = getDeclarationOfAliasSymbol(symbol);
1081
1143
  while (node !== undefined) {
1082
1144
  switch (node.kind) {
1083
- case 272 /* SyntaxKind.ImportEqualsDeclaration */:
1084
- case 279 /* SyntaxKind.ExportDeclaration */:
1145
+ case 273 /* SyntaxKind.ImportEqualsDeclaration */:
1146
+ case 280 /* SyntaxKind.ExportDeclaration */:
1085
1147
  return getIsTypeOnly(node);
1086
- case 274 /* SyntaxKind.ImportClause */:
1148
+ case 275 /* SyntaxKind.ImportClause */:
1087
1149
  if (node instanceof ImportClause && node.phaseModifier === 156 /* SyntaxKind.TypeKeyword */)
1088
1150
  return true;
1089
1151
  node = node.parent;
1090
1152
  continue;
1091
- case 277 /* SyntaxKind.ImportSpecifier */:
1092
- case 282 /* SyntaxKind.ExportSpecifier */:
1153
+ case 278 /* SyntaxKind.ImportSpecifier */:
1154
+ case 283 /* SyntaxKind.ExportSpecifier */:
1093
1155
  if (getIsTypeOnly(node))
1094
1156
  return true;
1095
1157
  node = node.parent;
1096
1158
  continue;
1097
- case 275 /* SyntaxKind.NamespaceImport */:
1098
- case 281 /* SyntaxKind.NamespaceExport */:
1099
- case 276 /* SyntaxKind.NamedImports */:
1100
- case 280 /* SyntaxKind.NamedExports */:
1159
+ case 276 /* SyntaxKind.NamespaceImport */:
1160
+ case 282 /* SyntaxKind.NamespaceExport */:
1161
+ case 277 /* SyntaxKind.NamedImports */:
1162
+ case 281 /* SyntaxKind.NamedExports */:
1101
1163
  node = node.parent;
1102
1164
  continue;
1103
1165
  }
@@ -1107,24 +1169,24 @@ function isTypeOnlyAlias(symbol) {
1107
1169
  }
1108
1170
  function isValueDeclarationKind(kind) {
1109
1171
  switch (kind) {
1110
- case 261 /* SyntaxKind.VariableDeclaration */:
1111
- case 170 /* SyntaxKind.Parameter */:
1112
- case 209 /* SyntaxKind.BindingElement */:
1113
- case 173 /* SyntaxKind.PropertyDeclaration */:
1114
- case 303 /* SyntaxKind.PropertyAssignment */:
1115
- case 304 /* SyntaxKind.ShorthandPropertyAssignment */:
1116
- case 306 /* SyntaxKind.EnumMember */:
1117
- case 211 /* SyntaxKind.ObjectLiteralExpression */:
1118
- case 263 /* SyntaxKind.FunctionDeclaration */:
1119
- case 219 /* SyntaxKind.FunctionExpression */:
1120
- case 220 /* SyntaxKind.ArrowFunction */:
1121
- case 264 /* SyntaxKind.ClassDeclaration */:
1122
- case 232 /* SyntaxKind.ClassExpression */:
1123
- case 267 /* SyntaxKind.EnumDeclaration */:
1124
- case 175 /* SyntaxKind.MethodDeclaration */:
1125
- case 178 /* SyntaxKind.GetAccessor */:
1126
- case 179 /* SyntaxKind.SetAccessor */:
1127
- case 268 /* SyntaxKind.ModuleDeclaration */:
1172
+ case 262 /* SyntaxKind.VariableDeclaration */:
1173
+ case 171 /* SyntaxKind.Parameter */:
1174
+ case 210 /* SyntaxKind.BindingElement */:
1175
+ case 174 /* SyntaxKind.PropertyDeclaration */:
1176
+ case 304 /* SyntaxKind.PropertyAssignment */:
1177
+ case 305 /* SyntaxKind.ShorthandPropertyAssignment */:
1178
+ case 307 /* SyntaxKind.EnumMember */:
1179
+ case 212 /* SyntaxKind.ObjectLiteralExpression */:
1180
+ case 264 /* SyntaxKind.FunctionDeclaration */:
1181
+ case 220 /* SyntaxKind.FunctionExpression */:
1182
+ case 221 /* SyntaxKind.ArrowFunction */:
1183
+ case 265 /* SyntaxKind.ClassDeclaration */:
1184
+ case 233 /* SyntaxKind.ClassExpression */:
1185
+ case 268 /* SyntaxKind.EnumDeclaration */:
1186
+ case 176 /* SyntaxKind.MethodDeclaration */:
1187
+ case 179 /* SyntaxKind.GetAccessor */:
1188
+ case 180 /* SyntaxKind.SetAccessor */:
1189
+ case 269 /* SyntaxKind.ModuleDeclaration */:
1128
1190
  return true;
1129
1191
  }
1130
1192
  return false;
@@ -4,8 +4,9 @@ import { Block, CatchClause, PrivateIdentifier, getBody, getName, getParameters,
4
4
  import { ModuleKind, getEmitModuleKind, shouldPreserveConstEnums } from '../options.js';
5
5
  import { isPrologueDirective } from '../printer/utilities.js';
6
6
  import { AssignmentFactory, convertVariableDeclarationToAssignment, flattenDestructuringAssignment, } from './destructuring.js';
7
+ import { nodeIsDecorated } from './decorator-utilities.js';
7
8
  import { Transformer } from './transformer.js';
8
- import { getInnermostModuleDeclaration, hasDecorators, hasSyntacticModifier, isIdentifierReference, isInstantiatedModule, isParameterPropertyDeclaration, isSameNode, } from './utilities.js';
9
+ import { getInnermostModuleDeclaration, hasDecorators, hasSyntacticModifier, isIdentifierReference, isInstantiatedModule, isParameterPropertyDeclaration, isSameNode, modifierFlagsOf, } from './utilities.js';
9
10
  const typeScriptModifiers = 128 /* ModifierFlags.Ambient */ |
10
11
  1 /* ModifierFlags.Public */ |
11
12
  2 /* ModifierFlags.Private */ |
@@ -62,21 +63,21 @@ export class RuntimeSyntax extends Transformer {
62
63
  }
63
64
  enterScope(node) {
64
65
  switch (node.kind) {
65
- case 307 /* SyntaxKind.SourceFile */:
66
+ case 308 /* SyntaxKind.SourceFile */:
66
67
  this.currentScope = node;
67
68
  if (node instanceof SourceFile)
68
69
  this.currentSourceFile = node;
69
70
  this.firstDeclarations = undefined;
70
71
  break;
71
- case 270 /* SyntaxKind.CaseBlock */:
72
- case 269 /* SyntaxKind.ModuleBlock */:
73
- case 242 /* SyntaxKind.Block */:
72
+ case 271 /* SyntaxKind.CaseBlock */:
73
+ case 270 /* SyntaxKind.ModuleBlock */:
74
+ case 243 /* SyntaxKind.Block */:
74
75
  this.currentScope = node;
75
76
  this.firstDeclarations = undefined;
76
77
  break;
77
- case 263 /* SyntaxKind.FunctionDeclaration */:
78
- case 264 /* SyntaxKind.ClassDeclaration */:
79
- case 244 /* SyntaxKind.VariableStatement */:
78
+ case 264 /* SyntaxKind.FunctionDeclaration */:
79
+ case 265 /* SyntaxKind.ClassDeclaration */:
80
+ case 245 /* SyntaxKind.VariableStatement */:
80
81
  this.recordDeclarationInScope(node);
81
82
  break;
82
83
  }
@@ -92,46 +93,46 @@ export class RuntimeSyntax extends Transformer {
92
93
  case 148 /* SyntaxKind.ReadonlyKeyword */:
93
94
  case 164 /* SyntaxKind.OverrideKeyword */:
94
95
  return undefined;
95
- case 267 /* SyntaxKind.EnumDeclaration */:
96
+ case 268 /* SyntaxKind.EnumDeclaration */:
96
97
  if (node instanceof EnumDeclaration)
97
98
  return this.visitEnumDeclaration(node);
98
99
  break;
99
- case 268 /* SyntaxKind.ModuleDeclaration */:
100
+ case 269 /* SyntaxKind.ModuleDeclaration */:
100
101
  if (node instanceof ModuleDeclaration)
101
102
  return this.visitModuleDeclaration(node);
102
103
  break;
103
- case 264 /* SyntaxKind.ClassDeclaration */:
104
+ case 265 /* SyntaxKind.ClassDeclaration */:
104
105
  if (node instanceof ClassDeclaration)
105
106
  return this.visitClassDeclaration(node);
106
107
  break;
107
- case 232 /* SyntaxKind.ClassExpression */:
108
+ case 233 /* SyntaxKind.ClassExpression */:
108
109
  if (node instanceof ClassExpression)
109
110
  return this.factory.updateClassExpression(node, this.visitModifiers(this.extractModifiers(node.modifiers, ~exportDefault)), node.name, undefined, this.visitNodes(node.heritageClauses), this.classMembers(node.members));
110
111
  break;
111
- case 177 /* SyntaxKind.Constructor */:
112
+ case 178 /* SyntaxKind.Constructor */:
112
113
  if (node instanceof ConstructorDeclaration)
113
114
  return this.visitConstructor(node);
114
115
  break;
115
- case 263 /* SyntaxKind.FunctionDeclaration */:
116
+ case 264 /* SyntaxKind.FunctionDeclaration */:
116
117
  if (node instanceof FunctionDeclaration)
117
118
  return this.visitFunctionDeclaration(node);
118
119
  break;
119
- case 244 /* SyntaxKind.VariableStatement */:
120
+ case 245 /* SyntaxKind.VariableStatement */:
120
121
  if (node instanceof VariableStatement)
121
122
  return this.visitVariableStatement(node);
122
123
  break;
123
- case 279 /* SyntaxKind.ExportDeclaration */:
124
- case 273 /* SyntaxKind.ImportDeclaration */:
125
- case 274 /* SyntaxKind.ImportClause */:
124
+ case 280 /* SyntaxKind.ExportDeclaration */:
125
+ case 274 /* SyntaxKind.ImportDeclaration */:
126
+ case 275 /* SyntaxKind.ImportClause */:
126
127
  // ES imports and exports are illegal in a namespace.
127
128
  if (this.inNamespaceBody())
128
129
  return undefined;
129
130
  return this.visitEachChild(node);
130
- case 272 /* SyntaxKind.ImportEqualsDeclaration */:
131
+ case 273 /* SyntaxKind.ImportEqualsDeclaration */:
131
132
  if (node instanceof ImportEqualsDeclaration) {
132
133
  const external = node.moduleReference instanceof ExternalModuleReference;
133
134
  if (this.currentNamespace !== undefined && this.currentScope !== undefined) {
134
- const inBlock = this.currentScope.kind === 242 /* SyntaxKind.Block */;
135
+ const inBlock = this.currentScope.kind === 243 /* SyntaxKind.Block */;
135
136
  if (external !== inBlock)
136
137
  return undefined;
137
138
  }
@@ -142,7 +143,7 @@ export class RuntimeSyntax extends Transformer {
142
143
  if (node instanceof Identifier && isIdentifierReference(node, this.parentNode))
143
144
  return this.visitExpressionIdentifier(node);
144
145
  return node;
145
- case 304 /* SyntaxKind.ShorthandPropertyAssignment */:
146
+ case 305 /* SyntaxKind.ShorthandPropertyAssignment */:
146
147
  if (node instanceof ShorthandPropertyAssignment)
147
148
  return this.visitShorthandPropertyAssignment(node);
148
149
  break;
@@ -152,7 +153,7 @@ export class RuntimeSyntax extends Transformer {
152
153
  inNamespaceBody() {
153
154
  return (this.currentNamespace !== undefined &&
154
155
  this.currentScope !== undefined &&
155
- this.currentScope.kind !== 242 /* SyntaxKind.Block */);
156
+ this.currentScope.kind !== 243 /* SyntaxKind.Block */);
156
157
  }
157
158
  // Scopes
158
159
  recordDeclarationInScope(node) {
@@ -187,7 +188,7 @@ export class RuntimeSyntax extends Transformer {
187
188
  }
188
189
  isExportOfNamespace(node) {
189
190
  return (this.currentNamespace !== undefined &&
190
- (this.currentScope === undefined || this.currentScope.kind !== 242 /* SyntaxKind.Block */) &&
191
+ (this.currentScope === undefined || this.currentScope.kind !== 243 /* SyntaxKind.Block */) &&
191
192
  hasSyntacticModifier(node, 32 /* ModifierFlags.Export */));
192
193
  }
193
194
  // Names
@@ -463,7 +464,10 @@ export class RuntimeSyntax extends Transformer {
463
464
  const visitedName = this.visitNode(node.name);
464
465
  let name = visitedName instanceof Identifier ? visitedName : undefined;
465
466
  if (name === undefined &&
466
- (exported || childIsDecorated(this.options.experimentalDecorators === true, node.members)))
467
+ (exported ||
468
+ childIsDecorated(this.options.experimentalDecorators === true, node.members) ||
469
+ ((modifierFlagsOf(node) & exportDefault) !== exportDefault &&
470
+ nodeIsDecorated(this.options.experimentalDecorators === true, node, undefined, undefined))))
467
471
  name = this.factory.createGeneratedNameForNode(node, 0, '', '');
468
472
  const updated = this.factory.updateClassDeclaration(node, modifiers, name, undefined, this.visitNodes(node.heritageClauses), this.classMembers(node.members));
469
473
  if (!exported)
@@ -691,9 +695,9 @@ function childIsDecorated(legacy, members) {
691
695
  return false;
692
696
  }
693
697
  function hasDecoratedParameter(member) {
694
- if (member.kind !== 175 /* SyntaxKind.MethodDeclaration */ &&
695
- member.kind !== 179 /* SyntaxKind.SetAccessor */ &&
696
- member.kind !== 177 /* SyntaxKind.Constructor */)
698
+ if (member.kind !== 176 /* SyntaxKind.MethodDeclaration */ &&
699
+ member.kind !== 180 /* SyntaxKind.SetAccessor */ &&
700
+ member.kind !== 178 /* SyntaxKind.Constructor */)
697
701
  return false;
698
702
  const parameters = getParameters(member);
699
703
  if (parameters === undefined || getBody(member) === undefined)
@@ -707,11 +711,11 @@ function memberCanBeDecorated(legacy, member) {
707
711
  if (legacy && getName(member) instanceof PrivateIdentifier)
708
712
  return false;
709
713
  switch (member.kind) {
710
- case 173 /* SyntaxKind.PropertyDeclaration */:
714
+ case 174 /* SyntaxKind.PropertyDeclaration */:
711
715
  return legacy || !hasSyntacticModifier(member, 64 /* ModifierFlags.Abstract */ | 128 /* ModifierFlags.Ambient */);
712
- case 178 /* SyntaxKind.GetAccessor */:
713
- case 179 /* SyntaxKind.SetAccessor */:
714
- case 175 /* SyntaxKind.MethodDeclaration */:
716
+ case 179 /* SyntaxKind.GetAccessor */:
717
+ case 180 /* SyntaxKind.SetAccessor */:
718
+ case 176 /* SyntaxKind.MethodDeclaration */:
715
719
  return getBody(member) !== undefined;
716
720
  }
717
721
  return false;