tsc-ts 0.0.4 → 0.0.6

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 (584) hide show
  1. package/README.md +34 -2
  2. package/dist/api/compiler/ast-utilities.d.ts +82 -0
  3. package/dist/api/compiler/ast-utilities.js +462 -0
  4. package/dist/api/compiler/ast.d.ts +2351 -0
  5. package/dist/api/compiler/ast.js +11212 -0
  6. package/dist/api/compiler/astnav.d.ts +37 -0
  7. package/dist/api/compiler/astnav.js +767 -0
  8. package/dist/api/compiler/binder-utilities.d.ts +182 -0
  9. package/dist/api/compiler/binder-utilities.js +1241 -0
  10. package/dist/api/compiler/binder.d.ts +33 -0
  11. package/dist/api/compiler/binder.js +2359 -0
  12. package/dist/api/compiler/character-codes.d.ts +161 -0
  13. package/dist/api/compiler/character-codes.js +160 -0
  14. package/dist/api/compiler/checker-calls.d.ts +46 -0
  15. package/dist/api/compiler/checker-calls.js +1641 -0
  16. package/dist/api/compiler/checker-classes.d.ts +30 -0
  17. package/dist/api/compiler/checker-classes.js +582 -0
  18. package/dist/api/compiler/checker-contextual.d.ts +77 -0
  19. package/dist/api/compiler/checker-contextual.js +1136 -0
  20. package/dist/api/compiler/checker-declaration-order.d.ts +12 -0
  21. package/dist/api/compiler/checker-declaration-order.js +357 -0
  22. package/dist/api/compiler/checker-declarations.d.ts +33 -0
  23. package/dist/api/compiler/checker-declarations.js +888 -0
  24. package/dist/api/compiler/checker-declared-types.d.ts +48 -0
  25. package/dist/api/compiler/checker-declared-types.js +788 -0
  26. package/dist/api/compiler/checker-decorators.d.ts +26 -0
  27. package/dist/api/compiler/checker-decorators.js +562 -0
  28. package/dist/api/compiler/checker-deprecation.d.ts +33 -0
  29. package/dist/api/compiler/checker-deprecation.js +314 -0
  30. package/dist/api/compiler/checker-destructuring.d.ts +34 -0
  31. package/dist/api/compiler/checker-destructuring.js +584 -0
  32. package/dist/api/compiler/checker-elaboration.d.ts +15 -0
  33. package/dist/api/compiler/checker-elaboration.js +291 -0
  34. package/dist/api/compiler/checker-emit-helpers.d.ts +58 -0
  35. package/dist/api/compiler/checker-emit-helpers.js +154 -0
  36. package/dist/api/compiler/checker-emit-resolver.d.ts +75 -0
  37. package/dist/api/compiler/checker-emit-resolver.js +580 -0
  38. package/dist/api/compiler/checker-evaluator.d.ts +27 -0
  39. package/dist/api/compiler/checker-evaluator.js +188 -0
  40. package/dist/api/compiler/checker-expressions.d.ts +67 -0
  41. package/dist/api/compiler/checker-expressions.js +1351 -0
  42. package/dist/api/compiler/checker-features.d.ts +6 -0
  43. package/dist/api/compiler/checker-features.js +354 -0
  44. package/dist/api/compiler/checker-flow.d.ts +86 -0
  45. package/dist/api/compiler/checker-flow.js +169 -0
  46. package/dist/api/compiler/checker-functions.d.ts +43 -0
  47. package/dist/api/compiler/checker-functions.js +1002 -0
  48. package/dist/api/compiler/checker-generated-code.d.ts +25 -0
  49. package/dist/api/compiler/checker-generated-code.js +168 -0
  50. package/dist/api/compiler/checker-globals.d.ts +14 -0
  51. package/dist/api/compiler/checker-globals.js +37 -0
  52. package/dist/api/compiler/checker-grammar.d.ts +35 -0
  53. package/dist/api/compiler/checker-grammar.js +2587 -0
  54. package/dist/api/compiler/checker-heritage.d.ts +28 -0
  55. package/dist/api/compiler/checker-heritage.js +901 -0
  56. package/dist/api/compiler/checker-inference.d.ts +179 -0
  57. package/dist/api/compiler/checker-inference.js +2105 -0
  58. package/dist/api/compiler/checker-iteration.d.ts +115 -0
  59. package/dist/api/compiler/checker-iteration.js +857 -0
  60. package/dist/api/compiler/checker-javascript.d.ts +42 -0
  61. package/dist/api/compiler/checker-javascript.js +442 -0
  62. package/dist/api/compiler/checker-jsdoc.d.ts +30 -0
  63. package/dist/api/compiler/checker-jsdoc.js +320 -0
  64. package/dist/api/compiler/checker-jsx.d.ts +94 -0
  65. package/dist/api/compiler/checker-jsx.js +1433 -0
  66. package/dist/api/compiler/checker-literals.d.ts +6 -0
  67. package/dist/api/compiler/checker-literals.js +43 -0
  68. package/dist/api/compiler/checker-members.d.ts +200 -0
  69. package/dist/api/compiler/checker-members.js +2148 -0
  70. package/dist/api/compiler/checker-modules.d.ts +85 -0
  71. package/dist/api/compiler/checker-modules.js +2141 -0
  72. package/dist/api/compiler/checker-narrowing.d.ts +120 -0
  73. package/dist/api/compiler/checker-narrowing.js +2797 -0
  74. package/dist/api/compiler/checker-object-literals.d.ts +14 -0
  75. package/dist/api/compiler/checker-object-literals.js +483 -0
  76. package/dist/api/compiler/checker-operators.d.ts +33 -0
  77. package/dist/api/compiler/checker-operators.js +1040 -0
  78. package/dist/api/compiler/checker-overloads.d.ts +7 -0
  79. package/dist/api/compiler/checker-overloads.js +271 -0
  80. package/dist/api/compiler/checker-property-access.d.ts +34 -0
  81. package/dist/api/compiler/checker-property-access.js +672 -0
  82. package/dist/api/compiler/checker-services.d.ts +49 -0
  83. package/dist/api/compiler/checker-services.js +995 -0
  84. package/dist/api/compiler/checker-signatures.d.ts +55 -0
  85. package/dist/api/compiler/checker-signatures.js +789 -0
  86. package/dist/api/compiler/checker-source-file.d.ts +27 -0
  87. package/dist/api/compiler/checker-source-file.js +619 -0
  88. package/dist/api/compiler/checker-statements.d.ts +18 -0
  89. package/dist/api/compiler/checker-statements.js +226 -0
  90. package/dist/api/compiler/checker-super.d.ts +13 -0
  91. package/dist/api/compiler/checker-super.js +241 -0
  92. package/dist/api/compiler/checker-symbol-types.d.ts +51 -0
  93. package/dist/api/compiler/checker-symbol-types.js +955 -0
  94. package/dist/api/compiler/checker-symbols.d.ts +181 -0
  95. package/dist/api/compiler/checker-symbols.js +1784 -0
  96. package/dist/api/compiler/checker-type-factory.d.ts +142 -0
  97. package/dist/api/compiler/checker-type-factory.js +2542 -0
  98. package/dist/api/compiler/checker-type-nodes.d.ts +26 -0
  99. package/dist/api/compiler/checker-type-nodes.js +828 -0
  100. package/dist/api/compiler/checker-type-operators.d.ts +109 -0
  101. package/dist/api/compiler/checker-type-operators.js +1842 -0
  102. package/dist/api/compiler/checker-types.d.ts +1093 -0
  103. package/dist/api/compiler/checker-types.js +1874 -0
  104. package/dist/api/compiler/checker-unused.d.ts +19 -0
  105. package/dist/api/compiler/checker-unused.js +524 -0
  106. package/dist/api/compiler/checker-utilities.d.ts +33 -0
  107. package/dist/api/compiler/checker-utilities.js +141 -0
  108. package/dist/api/compiler/checker.d.ts +512 -0
  109. package/dist/api/compiler/checker.js +932 -0
  110. package/dist/api/compiler/command-line.d.ts +32 -0
  111. package/dist/api/compiler/command-line.js +383 -0
  112. package/dist/api/compiler/compile-program.d.ts +118 -0
  113. package/dist/api/compiler/compile-program.js +384 -0
  114. package/dist/api/compiler/diagnostic-locales.d.ts +22 -0
  115. package/dist/api/compiler/diagnostic-locales.js +64 -0
  116. package/dist/api/compiler/diagnostic-messages.d.ts +2166 -0
  117. package/dist/api/compiler/diagnostic-messages.js +184 -0
  118. package/dist/api/compiler/diagnostics.d.ts +161 -0
  119. package/dist/api/compiler/diagnostics.js +784 -0
  120. package/dist/api/compiler/emitter.d.ts +71 -0
  121. package/dist/api/compiler/emitter.js +327 -0
  122. package/dist/api/compiler/file-include.d.ts +144 -0
  123. package/dist/api/compiler/file-include.js +599 -0
  124. package/dist/api/compiler/file-loader.d.ts +290 -0
  125. package/dist/api/compiler/file-loader.js +1323 -0
  126. package/dist/api/compiler/file-system.d.ts +51 -0
  127. package/dist/api/compiler/file-system.js +132 -0
  128. package/dist/api/compiler/flow.d.ts +60 -0
  129. package/dist/api/compiler/flow.js +45 -0
  130. package/dist/api/compiler/instantiation.d.ts +74 -0
  131. package/dist/api/compiler/instantiation.js +835 -0
  132. package/dist/api/compiler/jsdoc.d.ts +75 -0
  133. package/dist/api/compiler/jsdoc.js +1229 -0
  134. package/dist/api/compiler/link-tables.d.ts +105 -0
  135. package/dist/api/compiler/link-tables.js +319 -0
  136. package/dist/api/compiler/locale-data.d.ts +24 -0
  137. package/dist/api/compiler/locale-data.js +183 -0
  138. package/dist/api/compiler/locale.d.ts +4 -0
  139. package/dist/api/compiler/locale.js +317 -0
  140. package/dist/api/compiler/locales/cs-CZ.d.ts +2 -0
  141. package/dist/api/compiler/locales/cs-CZ.js +3 -0
  142. package/dist/api/compiler/locales/de-DE.d.ts +2 -0
  143. package/dist/api/compiler/locales/de-DE.js +3 -0
  144. package/dist/api/compiler/locales/es-ES.d.ts +2 -0
  145. package/dist/api/compiler/locales/es-ES.js +3 -0
  146. package/dist/api/compiler/locales/fr-FR.d.ts +2 -0
  147. package/dist/api/compiler/locales/fr-FR.js +3 -0
  148. package/dist/api/compiler/locales/it-IT.d.ts +2 -0
  149. package/dist/api/compiler/locales/it-IT.js +3 -0
  150. package/dist/api/compiler/locales/ja-JP.d.ts +2 -0
  151. package/dist/api/compiler/locales/ja-JP.js +3 -0
  152. package/dist/api/compiler/locales/ko-KR.d.ts +2 -0
  153. package/dist/api/compiler/locales/ko-KR.js +3 -0
  154. package/dist/api/compiler/locales/pl-PL.d.ts +2 -0
  155. package/dist/api/compiler/locales/pl-PL.js +3 -0
  156. package/dist/api/compiler/locales/pt-BR.d.ts +2 -0
  157. package/dist/api/compiler/locales/pt-BR.js +3 -0
  158. package/dist/api/compiler/locales/ru-RU.d.ts +2 -0
  159. package/dist/api/compiler/locales/ru-RU.js +3 -0
  160. package/dist/api/compiler/locales/tr-TR.d.ts +2 -0
  161. package/dist/api/compiler/locales/tr-TR.js +3 -0
  162. package/dist/api/compiler/locales/zh-CN.d.ts +2 -0
  163. package/dist/api/compiler/locales/zh-CN.js +3 -0
  164. package/dist/api/compiler/locales/zh-TW.d.ts +2 -0
  165. package/dist/api/compiler/locales/zh-TW.js +3 -0
  166. package/dist/api/compiler/module-resolution-types.d.ts +83 -0
  167. package/dist/api/compiler/module-resolution-types.js +176 -0
  168. package/dist/api/compiler/module-resolution.d.ts +71 -0
  169. package/dist/api/compiler/module-resolution.js +1598 -0
  170. package/dist/api/compiler/module-specifiers.d.ts +64 -0
  171. package/dist/api/compiler/module-specifiers.js +1101 -0
  172. package/dist/api/compiler/name-resolver.d.ts +43 -0
  173. package/dist/api/compiler/name-resolver.js +509 -0
  174. package/dist/api/compiler/node-builder-names.d.ts +32 -0
  175. package/dist/api/compiler/node-builder-names.js +854 -0
  176. package/dist/api/compiler/node-builder-pseudo.d.ts +36 -0
  177. package/dist/api/compiler/node-builder-pseudo.js +745 -0
  178. package/dist/api/compiler/node-builder-reuse.d.ts +4 -0
  179. package/dist/api/compiler/node-builder-reuse.js +647 -0
  180. package/dist/api/compiler/node-builder.d.ts +270 -0
  181. package/dist/api/compiler/node-builder.js +2645 -0
  182. package/dist/api/compiler/option-declarations.d.ts +90 -0
  183. package/dist/api/compiler/option-declarations.js +1460 -0
  184. package/dist/api/compiler/options.d.ts +289 -0
  185. package/dist/api/compiler/options.js +1197 -0
  186. package/dist/api/compiler/output-paths.d.ts +42 -0
  187. package/dist/api/compiler/output-paths.js +195 -0
  188. package/dist/api/compiler/package-json.d.ts +175 -0
  189. package/dist/api/compiler/package-json.js +1015 -0
  190. package/dist/api/compiler/parallel-parse.d.ts +221 -0
  191. package/dist/api/compiler/parallel-parse.js +541 -0
  192. package/dist/api/compiler/parser.d.ts +604 -0
  193. package/dist/api/compiler/parser.js +6426 -0
  194. package/dist/api/compiler/path.d.ts +91 -0
  195. package/dist/api/compiler/path.js +705 -0
  196. package/dist/api/compiler/printer/async-helpers.d.ts +22 -0
  197. package/dist/api/compiler/printer/async-helpers.js +91 -0
  198. package/dist/api/compiler/printer/auto-generate.d.ts +13 -0
  199. package/dist/api/compiler/printer/auto-generate.js +20 -0
  200. package/dist/api/compiler/printer/decorator-helpers.d.ts +24 -0
  201. package/dist/api/compiler/printer/decorator-helpers.js +118 -0
  202. package/dist/api/compiler/printer/emit-context.d.ts +157 -0
  203. package/dist/api/compiler/printer/emit-context.js +582 -0
  204. package/dist/api/compiler/printer/emit-flags.d.ts +60 -0
  205. package/dist/api/compiler/printer/emit-flags.js +2 -0
  206. package/dist/api/compiler/printer/factory-base.d.ts +171 -0
  207. package/dist/api/compiler/printer/factory-base.js +1505 -0
  208. package/dist/api/compiler/printer/factory.d.ts +147 -0
  209. package/dist/api/compiler/printer/factory.js +542 -0
  210. package/dist/api/compiler/printer/helpers.d.ts +27 -0
  211. package/dist/api/compiler/printer/helpers.js +164 -0
  212. package/dist/api/compiler/printer/name-generator.d.ts +41 -0
  213. package/dist/api/compiler/printer/name-generator.js +283 -0
  214. package/dist/api/compiler/printer/printer.d.ts +411 -0
  215. package/dist/api/compiler/printer/printer.js +4517 -0
  216. package/dist/api/compiler/printer/text-writer.d.ts +46 -0
  217. package/dist/api/compiler/printer/text-writer.js +172 -0
  218. package/dist/api/compiler/printer/utilities.d.ts +82 -0
  219. package/dist/api/compiler/printer/utilities.js +817 -0
  220. package/dist/api/compiler/program-checker.d.ts +156 -0
  221. package/dist/api/compiler/program-checker.js +529 -0
  222. package/dist/api/compiler/program-utilities.d.ts +52 -0
  223. package/dist/api/compiler/program-utilities.js +365 -0
  224. package/dist/api/compiler/program.d.ts +180 -0
  225. package/dist/api/compiler/program.js +1019 -0
  226. package/dist/api/compiler/pseudo-bigint.d.ts +5 -0
  227. package/dist/api/compiler/pseudo-bigint.js +61 -0
  228. package/dist/api/compiler/regexp-checker.d.ts +38 -0
  229. package/dist/api/compiler/regexp-checker.js +942 -0
  230. package/dist/api/compiler/relations.d.ts +263 -0
  231. package/dist/api/compiler/relations.js +4002 -0
  232. package/dist/api/compiler/reparser.d.ts +48 -0
  233. package/dist/api/compiler/reparser.js +1323 -0
  234. package/dist/api/compiler/scanner.d.ts +256 -0
  235. package/dist/api/compiler/scanner.js +2853 -0
  236. package/dist/api/compiler/side-state.d.ts +16 -0
  237. package/dist/api/compiler/side-state.js +89 -0
  238. package/dist/api/compiler/sourcemap.d.ts +55 -0
  239. package/dist/api/compiler/sourcemap.js +340 -0
  240. package/dist/api/compiler/spelling.d.ts +14 -0
  241. package/dist/api/compiler/spelling.js +128 -0
  242. package/dist/api/compiler/symbol-accessibility.d.ts +57 -0
  243. package/dist/api/compiler/symbol-accessibility.js +991 -0
  244. package/dist/api/compiler/symbol.d.ts +282 -0
  245. package/dist/api/compiler/symbol.js +339 -0
  246. package/dist/api/compiler/symlinks.d.ts +32 -0
  247. package/dist/api/compiler/symlinks.js +114 -0
  248. package/dist/api/compiler/syntax-kind.d.ts +389 -0
  249. package/dist/api/compiler/syntax-kind.js +2 -0
  250. package/dist/api/compiler/timeline.d.ts +9 -0
  251. package/dist/api/compiler/timeline.js +54 -0
  252. package/dist/api/compiler/transformers/alias-references.d.ts +39 -0
  253. package/dist/api/compiler/transformers/alias-references.js +677 -0
  254. package/dist/api/compiler/transformers/async-utilities.d.ts +51 -0
  255. package/dist/api/compiler/transformers/async-utilities.js +260 -0
  256. package/dist/api/compiler/transformers/async.d.ts +53 -0
  257. package/dist/api/compiler/transformers/async.js +645 -0
  258. package/dist/api/compiler/transformers/class-fields.d.ts +206 -0
  259. package/dist/api/compiler/transformers/class-fields.js +2418 -0
  260. package/dist/api/compiler/transformers/class-utilities.d.ts +46 -0
  261. package/dist/api/compiler/transformers/class-utilities.js +261 -0
  262. package/dist/api/compiler/transformers/commonjs-module.d.ts +103 -0
  263. package/dist/api/compiler/transformers/commonjs-module.js +1180 -0
  264. package/dist/api/compiler/transformers/const-enum-inliner.d.ts +11 -0
  265. package/dist/api/compiler/transformers/const-enum-inliner.js +36 -0
  266. package/dist/api/compiler/transformers/declarations-diagnostics.d.ts +52 -0
  267. package/dist/api/compiler/transformers/declarations-diagnostics.js +539 -0
  268. package/dist/api/compiler/transformers/declarations-pseudo.d.ts +160 -0
  269. package/dist/api/compiler/transformers/declarations-pseudo.js +799 -0
  270. package/dist/api/compiler/transformers/declarations-resolver.d.ts +152 -0
  271. package/dist/api/compiler/transformers/declarations-resolver.js +35 -0
  272. package/dist/api/compiler/transformers/declarations-syntactic.d.ts +119 -0
  273. package/dist/api/compiler/transformers/declarations-syntactic.js +1582 -0
  274. package/dist/api/compiler/transformers/declarations-tracker.d.ts +46 -0
  275. package/dist/api/compiler/transformers/declarations-tracker.js +198 -0
  276. package/dist/api/compiler/transformers/declarations.d.ts +175 -0
  277. package/dist/api/compiler/transformers/declarations.js +2381 -0
  278. package/dist/api/compiler/transformers/decorator-metadata.d.ts +54 -0
  279. package/dist/api/compiler/transformers/decorator-metadata.js +554 -0
  280. package/dist/api/compiler/transformers/decorator-utilities.d.ts +38 -0
  281. package/dist/api/compiler/transformers/decorator-utilities.js +238 -0
  282. package/dist/api/compiler/transformers/destructuring.d.ts +25 -0
  283. package/dist/api/compiler/transformers/destructuring.js +626 -0
  284. package/dist/api/compiler/transformers/downlevel.d.ts +6 -0
  285. package/dist/api/compiler/transformers/downlevel.js +45 -0
  286. package/dist/api/compiler/transformers/emit-resolver.d.ts +61 -0
  287. package/dist/api/compiler/transformers/emit-resolver.js +197 -0
  288. package/dist/api/compiler/transformers/es-decorators.d.ts +118 -0
  289. package/dist/api/compiler/transformers/es-decorators.js +1901 -0
  290. package/dist/api/compiler/transformers/exponentiation.d.ts +11 -0
  291. package/dist/api/compiler/transformers/exponentiation.js +76 -0
  292. package/dist/api/compiler/transformers/external-module-info.d.ts +35 -0
  293. package/dist/api/compiler/transformers/external-module-info.js +351 -0
  294. package/dist/api/compiler/transformers/for-await.d.ts +43 -0
  295. package/dist/api/compiler/transformers/for-await.js +469 -0
  296. package/dist/api/compiler/transformers/import-elision.d.ts +16 -0
  297. package/dist/api/compiler/transformers/import-elision.js +124 -0
  298. package/dist/api/compiler/transformers/jsx-entities.d.ts +1 -0
  299. package/dist/api/compiler/transformers/jsx-entities.js +256 -0
  300. package/dist/api/compiler/transformers/jsx.d.ts +71 -0
  301. package/dist/api/compiler/transformers/jsx.js +700 -0
  302. package/dist/api/compiler/transformers/legacy-decorators.d.ts +56 -0
  303. package/dist/api/compiler/transformers/legacy-decorators.js +564 -0
  304. package/dist/api/compiler/transformers/logical-assignment.d.ts +14 -0
  305. package/dist/api/compiler/transformers/logical-assignment.js +62 -0
  306. package/dist/api/compiler/transformers/module-utilities.d.ts +9 -0
  307. package/dist/api/compiler/transformers/module-utilities.js +36 -0
  308. package/dist/api/compiler/transformers/module.d.ts +49 -0
  309. package/dist/api/compiler/transformers/module.js +296 -0
  310. package/dist/api/compiler/transformers/named-evaluation.d.ts +26 -0
  311. package/dist/api/compiler/transformers/named-evaluation.js +266 -0
  312. package/dist/api/compiler/transformers/nullish-coalescing.d.ts +9 -0
  313. package/dist/api/compiler/transformers/nullish-coalescing.js +26 -0
  314. package/dist/api/compiler/transformers/object-rest-spread.d.ts +34 -0
  315. package/dist/api/compiler/transformers/object-rest-spread.js +411 -0
  316. package/dist/api/compiler/transformers/optional-catch.d.ts +9 -0
  317. package/dist/api/compiler/transformers/optional-catch.js +20 -0
  318. package/dist/api/compiler/transformers/optional-chain.d.ts +14 -0
  319. package/dist/api/compiler/transformers/optional-chain.js +188 -0
  320. package/dist/api/compiler/transformers/reference-resolver.d.ts +129 -0
  321. package/dist/api/compiler/transformers/reference-resolver.js +1157 -0
  322. package/dist/api/compiler/transformers/runtime-syntax.d.ts +71 -0
  323. package/dist/api/compiler/transformers/runtime-syntax.js +753 -0
  324. package/dist/api/compiler/transformers/subtree-facts.d.ts +10 -0
  325. package/dist/api/compiler/transformers/subtree-facts.js +205 -0
  326. package/dist/api/compiler/transformers/syntax-facts.d.ts +52 -0
  327. package/dist/api/compiler/transformers/syntax-facts.js +258 -0
  328. package/dist/api/compiler/transformers/tagged-template.d.ts +17 -0
  329. package/dist/api/compiler/transformers/tagged-template.js +148 -0
  330. package/dist/api/compiler/transformers/transformer.d.ts +17 -0
  331. package/dist/api/compiler/transformers/transformer.js +54 -0
  332. package/dist/api/compiler/transformers/type-eraser.d.ts +21 -0
  333. package/dist/api/compiler/transformers/type-eraser.js +346 -0
  334. package/dist/api/compiler/transformers/type-serialization.d.ts +20 -0
  335. package/dist/api/compiler/transformers/type-serialization.js +347 -0
  336. package/dist/api/compiler/transformers/using.d.ts +56 -0
  337. package/dist/api/compiler/transformers/using.js +453 -0
  338. package/dist/api/compiler/transformers/utilities.d.ts +50 -0
  339. package/dist/api/compiler/transformers/utilities.js +347 -0
  340. package/dist/api/compiler/transformers/visitor-base.d.ts +6 -0
  341. package/dist/api/compiler/transformers/visitor-base.js +817 -0
  342. package/dist/api/compiler/transformers/visitor-hooks.d.ts +29 -0
  343. package/dist/api/compiler/transformers/visitor-hooks.js +189 -0
  344. package/dist/api/compiler/tsconfig.d.ts +177 -0
  345. package/dist/api/compiler/tsconfig.js +1311 -0
  346. package/dist/api/compiler/type-printer.d.ts +15 -0
  347. package/dist/api/compiler/type-printer.js +74 -0
  348. package/dist/api/compiler/types.d.ts +87 -0
  349. package/dist/api/compiler/types.js +23 -0
  350. package/dist/api/compiler/unicode-identifiers.d.ts +2 -0
  351. package/dist/api/compiler/unicode-identifiers.js +209 -0
  352. package/dist/api/compiler/unicode-properties.d.ts +8 -0
  353. package/dist/api/compiler/unicode-properties.js +531 -0
  354. package/dist/api/compiler/vfs-match.d.ts +24 -0
  355. package/dist/api/compiler/vfs-match.js +587 -0
  356. package/dist/api/library/ast.d.ts +3 -2
  357. package/dist/api/library/ast.generated.d.ts +127 -139
  358. package/dist/api/library/checker.d.ts +51 -0
  359. package/dist/api/library/checker.js +318 -0
  360. package/dist/api/library/diagnostics.d.ts +13 -0
  361. package/dist/api/library/diagnostics.js +50 -0
  362. package/dist/api/library/disk.d.ts +13 -0
  363. package/dist/api/library/disk.js +66 -0
  364. package/dist/api/library/errors.d.ts +13 -0
  365. package/dist/api/library/errors.js +24 -0
  366. package/dist/api/library/host.d.ts +24 -0
  367. package/dist/api/library/host.js +52 -0
  368. package/dist/api/library/index.d.ts +5 -1
  369. package/dist/api/library/index.js +4 -0
  370. package/dist/api/library/nodes.d.ts +51 -0
  371. package/dist/api/library/nodes.js +196 -0
  372. package/dist/api/library/options.d.ts +144 -0
  373. package/dist/api/library/options.js +308 -0
  374. package/dist/api/library/parse.d.ts +19 -0
  375. package/dist/api/library/parse.js +41 -0
  376. package/dist/api/library/program.d.ts +21 -0
  377. package/dist/api/library/program.js +234 -0
  378. package/dist/api/library/types.d.ts +14 -1
  379. package/package.json +12 -8
  380. package/src/compiler/ast-utilities.ts +548 -0
  381. package/src/compiler/ast.ts +12870 -0
  382. package/src/compiler/astnav.ts +799 -0
  383. package/src/compiler/binder-utilities.ts +1392 -0
  384. package/src/compiler/binder.ts +2707 -0
  385. package/src/compiler/build-info.ts +1197 -0
  386. package/src/compiler/character-codes.ts +323 -0
  387. package/src/compiler/checker-calls.ts +2155 -0
  388. package/src/compiler/checker-classes.ts +706 -0
  389. package/src/compiler/checker-contextual.ts +1457 -0
  390. package/src/compiler/checker-declaration-order.ts +438 -0
  391. package/src/compiler/checker-declarations.ts +1201 -0
  392. package/src/compiler/checker-declared-types.ts +919 -0
  393. package/src/compiler/checker-decorators.ts +694 -0
  394. package/src/compiler/checker-deprecation.ts +355 -0
  395. package/src/compiler/checker-destructuring.ts +805 -0
  396. package/src/compiler/checker-elaboration.ts +477 -0
  397. package/src/compiler/checker-emit-helpers.ts +224 -0
  398. package/src/compiler/checker-emit-resolver.ts +769 -0
  399. package/src/compiler/checker-evaluator.ts +243 -0
  400. package/src/compiler/checker-expressions.ts +1831 -0
  401. package/src/compiler/checker-features.ts +361 -0
  402. package/src/compiler/checker-flow.ts +394 -0
  403. package/src/compiler/checker-functions.ts +1296 -0
  404. package/src/compiler/checker-generated-code.ts +227 -0
  405. package/src/compiler/checker-globals.ts +52 -0
  406. package/src/compiler/checker-grammar.ts +3596 -0
  407. package/src/compiler/checker-heritage.ts +1240 -0
  408. package/src/compiler/checker-inference.ts +2584 -0
  409. package/src/compiler/checker-iteration.ts +1206 -0
  410. package/src/compiler/checker-javascript.ts +502 -0
  411. package/src/compiler/checker-jsdoc.ts +360 -0
  412. package/src/compiler/checker-jsx.ts +1928 -0
  413. package/src/compiler/checker-literals.ts +61 -0
  414. package/src/compiler/checker-members.ts +2480 -0
  415. package/src/compiler/checker-modules.ts +2896 -0
  416. package/src/compiler/checker-narrowing.ts +3230 -0
  417. package/src/compiler/checker-object-literals.ts +591 -0
  418. package/src/compiler/checker-operators.ts +1422 -0
  419. package/src/compiler/checker-overloads.ts +328 -0
  420. package/src/compiler/checker-property-access.ts +906 -0
  421. package/src/compiler/checker-services.ts +1149 -0
  422. package/src/compiler/checker-signatures.ts +1032 -0
  423. package/src/compiler/checker-source-file.ts +732 -0
  424. package/src/compiler/checker-statements.ts +292 -0
  425. package/src/compiler/checker-super.ts +261 -0
  426. package/src/compiler/checker-symbol-types.ts +1187 -0
  427. package/src/compiler/checker-symbols.ts +2157 -0
  428. package/src/compiler/checker-type-factory.ts +2616 -0
  429. package/src/compiler/checker-type-nodes.ts +1033 -0
  430. package/src/compiler/checker-type-operators.ts +2510 -0
  431. package/src/compiler/checker-types.ts +2520 -0
  432. package/src/compiler/checker-unused.ts +642 -0
  433. package/src/compiler/checker-utilities.ts +161 -0
  434. package/src/compiler/checker.ts +1138 -0
  435. package/src/compiler/command-line.ts +436 -0
  436. package/src/compiler/compile-program.ts +439 -0
  437. package/src/compiler/decoder.ts +1209 -0
  438. package/src/compiler/diagnostic-locales.ts +86 -0
  439. package/src/compiler/diagnostic-messages.ts +2349 -0
  440. package/src/compiler/diagnostics.ts +858 -0
  441. package/src/compiler/emitter.ts +434 -0
  442. package/src/compiler/encoder.ts +1945 -0
  443. package/src/compiler/file-include.ts +741 -0
  444. package/src/compiler/file-loader.ts +1597 -0
  445. package/src/compiler/file-system.ts +143 -0
  446. package/src/compiler/flow.ts +89 -0
  447. package/src/compiler/help.ts +473 -0
  448. package/src/compiler/incremental.ts +2818 -0
  449. package/src/compiler/init.ts +141 -0
  450. package/src/compiler/instantiation.ts +938 -0
  451. package/src/compiler/jsdoc.ts +1386 -0
  452. package/src/compiler/link-tables.ts +343 -0
  453. package/src/compiler/locale-data.ts +203 -0
  454. package/src/compiler/locale.ts +307 -0
  455. package/src/compiler/locales/cs-CZ.ts +5 -0
  456. package/src/compiler/locales/de-DE.ts +5 -0
  457. package/src/compiler/locales/es-ES.ts +5 -0
  458. package/src/compiler/locales/fr-FR.ts +5 -0
  459. package/src/compiler/locales/it-IT.ts +5 -0
  460. package/src/compiler/locales/ja-JP.ts +5 -0
  461. package/src/compiler/locales/ko-KR.ts +5 -0
  462. package/src/compiler/locales/pl-PL.ts +5 -0
  463. package/src/compiler/locales/pt-BR.ts +5 -0
  464. package/src/compiler/locales/ru-RU.ts +5 -0
  465. package/src/compiler/locales/tr-TR.ts +5 -0
  466. package/src/compiler/locales/zh-CN.ts +5 -0
  467. package/src/compiler/locales/zh-TW.ts +5 -0
  468. package/src/compiler/module-resolution-types.ts +243 -0
  469. package/src/compiler/module-resolution.ts +2072 -0
  470. package/src/compiler/module-specifiers.ts +1491 -0
  471. package/src/compiler/name-resolver.ts +646 -0
  472. package/src/compiler/node-builder-names.ts +1071 -0
  473. package/src/compiler/node-builder-pseudo.ts +892 -0
  474. package/src/compiler/node-builder-reuse.ts +764 -0
  475. package/src/compiler/node-builder.ts +3433 -0
  476. package/src/compiler/option-declarations.ts +1560 -0
  477. package/src/compiler/options.ts +1576 -0
  478. package/src/compiler/output-paths.ts +334 -0
  479. package/src/compiler/package-json.ts +1083 -0
  480. package/src/compiler/parallel-check.ts +1954 -0
  481. package/src/compiler/parallel-parse.ts +595 -0
  482. package/src/compiler/parse-thread.ts +136 -0
  483. package/src/compiler/parser.ts +7766 -0
  484. package/src/compiler/path.ts +717 -0
  485. package/src/compiler/printer/async-helpers.ts +183 -0
  486. package/src/compiler/printer/auto-generate.ts +27 -0
  487. package/src/compiler/printer/decorator-helpers.ts +218 -0
  488. package/src/compiler/printer/emit-context.ts +684 -0
  489. package/src/compiler/printer/emit-flags.ts +64 -0
  490. package/src/compiler/printer/factory-base.ts +2577 -0
  491. package/src/compiler/printer/factory.ts +764 -0
  492. package/src/compiler/printer/helpers.ts +291 -0
  493. package/src/compiler/printer/name-generator.ts +372 -0
  494. package/src/compiler/printer/printer.ts +5072 -0
  495. package/src/compiler/printer/text-writer.ts +183 -0
  496. package/src/compiler/printer/utilities.ts +884 -0
  497. package/src/compiler/program-checker.ts +594 -0
  498. package/src/compiler/program-utilities.ts +435 -0
  499. package/src/compiler/program.ts +1426 -0
  500. package/src/compiler/pseudo-bigint.ts +62 -0
  501. package/src/compiler/regexp-checker.ts +1142 -0
  502. package/src/compiler/relations.ts +5149 -0
  503. package/src/compiler/reparser.ts +1566 -0
  504. package/src/compiler/scanner.ts +2951 -0
  505. package/src/compiler/show-config.ts +239 -0
  506. package/src/compiler/side-state.ts +125 -0
  507. package/src/compiler/sourcemap.ts +366 -0
  508. package/src/compiler/spelling.ts +122 -0
  509. package/src/compiler/symbol-accessibility.ts +1166 -0
  510. package/src/compiler/symbol.ts +557 -0
  511. package/src/compiler/symlinks.ts +137 -0
  512. package/src/compiler/syntax-kind.ts +391 -0
  513. package/src/compiler/thread-entry.ts +191 -0
  514. package/src/compiler/timeline.ts +53 -0
  515. package/src/compiler/transformers/alias-references.ts +757 -0
  516. package/src/compiler/transformers/async-utilities.ts +335 -0
  517. package/src/compiler/transformers/async.ts +838 -0
  518. package/src/compiler/transformers/class-fields.ts +2967 -0
  519. package/src/compiler/transformers/class-utilities.ts +324 -0
  520. package/src/compiler/transformers/commonjs-module.ts +1621 -0
  521. package/src/compiler/transformers/const-enum-inliner.ts +50 -0
  522. package/src/compiler/transformers/declarations-diagnostics.ts +833 -0
  523. package/src/compiler/transformers/declarations-pseudo.ts +969 -0
  524. package/src/compiler/transformers/declarations-resolver.ts +249 -0
  525. package/src/compiler/transformers/declarations-syntactic.ts +1867 -0
  526. package/src/compiler/transformers/declarations-tracker.ts +269 -0
  527. package/src/compiler/transformers/declarations.ts +3120 -0
  528. package/src/compiler/transformers/decorator-metadata.ts +697 -0
  529. package/src/compiler/transformers/decorator-utilities.ts +283 -0
  530. package/src/compiler/transformers/destructuring.ts +708 -0
  531. package/src/compiler/transformers/downlevel.ts +50 -0
  532. package/src/compiler/transformers/emit-resolver.ts +258 -0
  533. package/src/compiler/transformers/es-decorators.ts +2682 -0
  534. package/src/compiler/transformers/exponentiation.ts +80 -0
  535. package/src/compiler/transformers/external-module-info.ts +412 -0
  536. package/src/compiler/transformers/for-await.ts +687 -0
  537. package/src/compiler/transformers/import-elision.ts +152 -0
  538. package/src/compiler/transformers/jsx-entities.ts +256 -0
  539. package/src/compiler/transformers/jsx.ts +824 -0
  540. package/src/compiler/transformers/legacy-decorators.ts +726 -0
  541. package/src/compiler/transformers/logical-assignment.ts +75 -0
  542. package/src/compiler/transformers/module-utilities.ts +42 -0
  543. package/src/compiler/transformers/module.ts +474 -0
  544. package/src/compiler/transformers/named-evaluation.ts +389 -0
  545. package/src/compiler/transformers/nullish-coalescing.ts +35 -0
  546. package/src/compiler/transformers/object-rest-spread.ts +577 -0
  547. package/src/compiler/transformers/optional-catch.ts +29 -0
  548. package/src/compiler/transformers/optional-chain.ts +246 -0
  549. package/src/compiler/transformers/reference-resolver.ts +1213 -0
  550. package/src/compiler/transformers/runtime-syntax.ts +942 -0
  551. package/src/compiler/transformers/subtree-facts.ts +253 -0
  552. package/src/compiler/transformers/syntax-facts.ts +358 -0
  553. package/src/compiler/transformers/tagged-template.ts +167 -0
  554. package/src/compiler/transformers/transformer.ts +56 -0
  555. package/src/compiler/transformers/type-eraser.ts +520 -0
  556. package/src/compiler/transformers/type-serialization.ts +374 -0
  557. package/src/compiler/transformers/using.ts +613 -0
  558. package/src/compiler/transformers/utilities.ts +419 -0
  559. package/src/compiler/transformers/visitor-base.ts +1601 -0
  560. package/src/compiler/transformers/visitor-hooks.ts +252 -0
  561. package/src/compiler/tsc-build.ts +1422 -0
  562. package/src/compiler/tsc-cli.ts +669 -0
  563. package/src/compiler/tsc-compile.ts +446 -0
  564. package/src/compiler/tsc-watch.ts +922 -0
  565. package/src/compiler/tsconfig.ts +1574 -0
  566. package/src/compiler/type-printer.ts +110 -0
  567. package/src/compiler/types.ts +115 -0
  568. package/src/compiler/unicode-identifiers.ts +212 -0
  569. package/src/compiler/unicode-properties.ts +537 -0
  570. package/src/compiler/vfs-match.ts +597 -0
  571. package/src/compiler/xxh3.ts +650 -0
  572. package/src/library/ast.generated.ts +141 -167
  573. package/src/library/ast.ts +4 -1
  574. package/src/library/checker.ts +384 -0
  575. package/src/library/diagnostics.ts +72 -0
  576. package/src/library/disk.ts +73 -0
  577. package/src/library/errors.ts +26 -0
  578. package/src/library/host.ts +63 -0
  579. package/src/library/index.ts +21 -0
  580. package/src/library/nodes.ts +232 -0
  581. package/src/library/options.ts +449 -0
  582. package/src/library/parse.ts +63 -0
  583. package/src/library/program.ts +293 -0
  584. package/src/library/types.ts +14 -1
@@ -0,0 +1,2577 @@
1
+ // Generated by scripts/generate-visitor.mjs; do not edit.
2
+ import {
3
+ ArrayLiteralExpression,
4
+ ArrayTypeNode,
5
+ ArrowFunction,
6
+ AsExpression,
7
+ AwaitExpression,
8
+ BinaryExpression,
9
+ BindingElement,
10
+ BindingPattern,
11
+ Block,
12
+ BreakStatement,
13
+ CallExpression,
14
+ CallSignatureDeclaration,
15
+ CaseBlock,
16
+ CaseOrDefaultClause,
17
+ CatchClause,
18
+ ClassDeclaration,
19
+ ClassExpression,
20
+ ClassStaticBlockDeclaration,
21
+ ComputedPropertyName,
22
+ ConditionalExpression,
23
+ ConditionalTypeNode,
24
+ ConstructSignatureDeclaration,
25
+ ConstructorDeclaration,
26
+ ConstructorTypeNode,
27
+ ContinueStatement,
28
+ Decorator,
29
+ DeleteExpression,
30
+ DoStatement,
31
+ ElementAccessExpression,
32
+ EnumDeclaration,
33
+ EnumMember,
34
+ ExportAssignment,
35
+ ExportDeclaration,
36
+ ExportSpecifier,
37
+ ExpressionStatement,
38
+ ExpressionWithTypeArguments,
39
+ ExternalModuleReference,
40
+ ForInOrOfStatement,
41
+ ForStatement,
42
+ FunctionDeclaration,
43
+ FunctionExpression,
44
+ FunctionTypeNode,
45
+ GetAccessorDeclaration,
46
+ HeritageClause,
47
+ IfStatement,
48
+ ImportAttribute,
49
+ ImportAttributes,
50
+ ImportClause,
51
+ ImportDeclaration,
52
+ ImportEqualsDeclaration,
53
+ ImportSpecifier,
54
+ ImportTypeNode,
55
+ IndexSignatureDeclaration,
56
+ IndexedAccessTypeNode,
57
+ InferTypeNode,
58
+ InterfaceDeclaration,
59
+ IntersectionTypeNode,
60
+ JSDoc,
61
+ JSDocAugmentsTag,
62
+ JSDocCallbackTag,
63
+ JSDocDeprecatedTag,
64
+ JSDocImplementsTag,
65
+ JSDocImportTag,
66
+ JSDocLink,
67
+ JSDocLinkCode,
68
+ JSDocLinkPlain,
69
+ JSDocNameReference,
70
+ JSDocNonNullableType,
71
+ JSDocNullableType,
72
+ JSDocOptionalType,
73
+ JSDocOverloadTag,
74
+ JSDocOverrideTag,
75
+ JSDocParameterOrPropertyTag,
76
+ JSDocPrivateTag,
77
+ JSDocProtectedTag,
78
+ JSDocPublicTag,
79
+ JSDocReadonlyTag,
80
+ JSDocReturnTag,
81
+ JSDocSatisfiesTag,
82
+ JSDocSeeTag,
83
+ JSDocSignature,
84
+ JSDocTemplateTag,
85
+ JSDocThisTag,
86
+ JSDocThrowsTag,
87
+ JSDocTypeExpression,
88
+ JSDocTypeLiteral,
89
+ JSDocTypeTag,
90
+ JSDocTypedefTag,
91
+ JSDocUnknownTag,
92
+ JSDocVariadicType,
93
+ JsxAttribute,
94
+ JsxAttributes,
95
+ JsxClosingElement,
96
+ JsxElement,
97
+ JsxExpression,
98
+ JsxFragment,
99
+ JsxNamespacedName,
100
+ JsxOpeningElement,
101
+ JsxSelfClosingElement,
102
+ JsxSpreadAttribute,
103
+ LabeledStatement,
104
+ LiteralTypeNode,
105
+ MappedTypeNode,
106
+ MetaProperty,
107
+ MethodDeclaration,
108
+ MethodSignatureDeclaration,
109
+ MissingDeclaration,
110
+ ModuleBlock,
111
+ ModuleDeclaration,
112
+ NamedExports,
113
+ NamedImports,
114
+ NamedTupleMember,
115
+ NamespaceExport,
116
+ NamespaceExportDeclaration,
117
+ NamespaceImport,
118
+ NewExpression,
119
+ NonNullExpression,
120
+ ObjectLiteralExpression,
121
+ OptionalTypeNode,
122
+ ParameterDeclaration,
123
+ ParenthesizedExpression,
124
+ ParenthesizedTypeNode,
125
+ PartiallyEmittedExpression,
126
+ PostfixUnaryExpression,
127
+ PrefixUnaryExpression,
128
+ PropertyAccessExpression,
129
+ PropertyAssignment,
130
+ PropertyDeclaration,
131
+ PropertySignatureDeclaration,
132
+ QualifiedName,
133
+ RestTypeNode,
134
+ ReturnStatement,
135
+ SatisfiesExpression,
136
+ SetAccessorDeclaration,
137
+ ShorthandPropertyAssignment,
138
+ SpreadAssignment,
139
+ SpreadElement,
140
+ SwitchStatement,
141
+ SyntaxList,
142
+ SyntheticReferenceExpression,
143
+ TaggedTemplateExpression,
144
+ TemplateExpression,
145
+ TemplateLiteralTypeNode,
146
+ TemplateLiteralTypeSpan,
147
+ TemplateSpan,
148
+ ThrowStatement,
149
+ TryStatement,
150
+ TupleTypeNode,
151
+ TypeAliasDeclaration,
152
+ TypeAssertion,
153
+ TypeLiteralNode,
154
+ TypeOfExpression,
155
+ TypeOperatorNode,
156
+ TypeParameterDeclaration,
157
+ TypePredicateNode,
158
+ TypeQueryNode,
159
+ TypeReferenceNode,
160
+ UnionTypeNode,
161
+ VariableDeclaration,
162
+ VariableDeclarationList,
163
+ VariableStatement,
164
+ VoidExpression,
165
+ WhileStatement,
166
+ WithStatement,
167
+ YieldExpression,
168
+ type BindingName,
169
+ type ConciseBody,
170
+ type EntityName,
171
+ type Expression,
172
+ type ForInitializer,
173
+ type FunctionBody,
174
+ type Identifier,
175
+ type ImportAttributeName,
176
+ type JSDocFullName,
177
+ type JsxAttributeName,
178
+ type JsxAttributeValue,
179
+ type JsxClosingFragment,
180
+ type JsxOpeningFragment,
181
+ type JsxTagNameExpression,
182
+ type LeftHandSideExpression,
183
+ type MemberName,
184
+ type ModuleBody,
185
+ type ModuleExportName,
186
+ type ModuleName,
187
+ type ModuleReference,
188
+ type NamedExportBindings,
189
+ type NamedImportBindings,
190
+ type NodeFlags,
191
+ type PropertyName,
192
+ type Statement,
193
+ type TemplateHead,
194
+ type TemplateLiteral,
195
+ type TemplateMiddleOrTail,
196
+ type TypeNode,
197
+ type TypePredicateParameterName,
198
+ type ModifierList,
199
+ type Node,
200
+ type NodeList,
201
+ type Token,
202
+ } from '../ast.js';
203
+ import type { SyntaxKind } from '../syntax-kind.js';
204
+
205
+ /** `update*` functions: return the node if no child changed, else a copy with the node's flags, range and original. */
206
+ export abstract class NodeFactoryBase {
207
+ protected abstract finishUpdate(updated: Node, original: Node): boolean;
208
+
209
+ updateArrayLiteralExpression(
210
+ node: ArrayLiteralExpression,
211
+ elements: NodeList,
212
+ multiLine: boolean,
213
+ ): ArrayLiteralExpression {
214
+ if (elements !== node.elements || multiLine !== node.multiLine) {
215
+ const updated = new ArrayLiteralExpression(elements, multiLine);
216
+ this.finishUpdate(updated, node);
217
+ return updated;
218
+ }
219
+ return node;
220
+ }
221
+
222
+ updateArrayTypeNode(node: ArrayTypeNode, elementType: TypeNode): ArrayTypeNode {
223
+ if (elementType !== node.elementType) {
224
+ const updated = new ArrayTypeNode(elementType);
225
+ this.finishUpdate(updated, node);
226
+ return updated;
227
+ }
228
+ return node;
229
+ }
230
+
231
+ updateArrowFunction(
232
+ node: ArrowFunction,
233
+ modifiers: ModifierList | undefined,
234
+ typeParameters: NodeList | undefined,
235
+ parameters: NodeList,
236
+ typeNode: TypeNode | undefined,
237
+ fullSignature: TypeNode | undefined,
238
+ equalsGreaterThanToken: Token | undefined,
239
+ body: ConciseBody,
240
+ ): ArrowFunction {
241
+ if (
242
+ modifiers !== node.modifiers ||
243
+ typeParameters !== node.typeParameters ||
244
+ parameters !== node.parameters ||
245
+ typeNode !== node.type ||
246
+ fullSignature !== node.fullSignature ||
247
+ equalsGreaterThanToken !== node.equalsGreaterThanToken ||
248
+ body !== node.body
249
+ ) {
250
+ const updated = new ArrowFunction(
251
+ modifiers,
252
+ typeParameters,
253
+ parameters,
254
+ typeNode,
255
+ fullSignature,
256
+ equalsGreaterThanToken,
257
+ body,
258
+ );
259
+ this.finishUpdate(updated, node);
260
+ return updated;
261
+ }
262
+ return node;
263
+ }
264
+
265
+ updateAsExpression(node: AsExpression, expression: Expression, typeNode: TypeNode): AsExpression {
266
+ if (expression !== node.expression || typeNode !== node.type) {
267
+ const updated = new AsExpression(expression, typeNode);
268
+ this.finishUpdate(updated, node);
269
+ return updated;
270
+ }
271
+ return node;
272
+ }
273
+
274
+ updateAwaitExpression(node: AwaitExpression, expression: Expression): AwaitExpression {
275
+ if (expression !== node.expression) {
276
+ const updated = new AwaitExpression(expression);
277
+ this.finishUpdate(updated, node);
278
+ return updated;
279
+ }
280
+ return node;
281
+ }
282
+
283
+ updateBinaryExpression(
284
+ node: BinaryExpression,
285
+ modifiers: ModifierList | undefined,
286
+ left: Expression,
287
+ typeNode: TypeNode | undefined,
288
+ operatorToken: Token,
289
+ right: Expression,
290
+ ): BinaryExpression {
291
+ if (
292
+ modifiers !== node.modifiers ||
293
+ left !== node.left ||
294
+ typeNode !== node.type ||
295
+ operatorToken !== node.operatorToken ||
296
+ right !== node.right
297
+ ) {
298
+ const updated = new BinaryExpression(modifiers, left, typeNode, operatorToken, right);
299
+ this.finishUpdate(updated, node);
300
+ return updated;
301
+ }
302
+ return node;
303
+ }
304
+
305
+ updateBindingElement(
306
+ node: BindingElement,
307
+ dotDotDotToken: Token | undefined,
308
+ propertyName: PropertyName | undefined,
309
+ name: BindingName | undefined,
310
+ initializer: Expression | undefined,
311
+ ): BindingElement {
312
+ if (
313
+ dotDotDotToken !== node.dotDotDotToken ||
314
+ propertyName !== node.propertyName ||
315
+ name !== node.name ||
316
+ initializer !== node.initializer
317
+ ) {
318
+ const updated = new BindingElement(dotDotDotToken, propertyName, name, initializer);
319
+ this.finishUpdate(updated, node);
320
+ return updated;
321
+ }
322
+ return node;
323
+ }
324
+
325
+ updateBindingPattern(node: BindingPattern, elements: NodeList): BindingPattern {
326
+ if (elements !== node.elements) {
327
+ const updated = new BindingPattern(node.kind, elements);
328
+ this.finishUpdate(updated, node);
329
+ return updated;
330
+ }
331
+ return node;
332
+ }
333
+
334
+ updateBlock(node: Block, statements: NodeList, multiLine: boolean): Block {
335
+ if (statements !== node.statements || multiLine !== node.multiLine) {
336
+ const updated = new Block(statements, multiLine);
337
+ this.finishUpdate(updated, node);
338
+ return updated;
339
+ }
340
+ return node;
341
+ }
342
+
343
+ updateBreakStatement(node: BreakStatement, label: Identifier | undefined): BreakStatement {
344
+ if (label !== node.label) {
345
+ const updated = new BreakStatement(label);
346
+ this.finishUpdate(updated, node);
347
+ return updated;
348
+ }
349
+ return node;
350
+ }
351
+
352
+ updateCallExpression(
353
+ node: CallExpression,
354
+ expression: Expression,
355
+ questionDotToken: Token | undefined,
356
+ typeArguments: NodeList | undefined,
357
+ args: NodeList,
358
+ flags: NodeFlags,
359
+ ): CallExpression {
360
+ if (
361
+ expression !== node.expression ||
362
+ questionDotToken !== node.questionDotToken ||
363
+ typeArguments !== node.typeArguments ||
364
+ args !== node.arguments ||
365
+ flags !== node.flags
366
+ ) {
367
+ const updated = new CallExpression(expression, questionDotToken, typeArguments, args, flags);
368
+ this.finishUpdate(updated, node);
369
+ return updated;
370
+ }
371
+ return node;
372
+ }
373
+
374
+ updateCallSignatureDeclaration(
375
+ node: CallSignatureDeclaration,
376
+ typeParameters: NodeList | undefined,
377
+ parameters: NodeList,
378
+ typeNode: TypeNode | undefined,
379
+ ): CallSignatureDeclaration {
380
+ if (typeParameters !== node.typeParameters || parameters !== node.parameters || typeNode !== node.type) {
381
+ const updated = new CallSignatureDeclaration(typeParameters, parameters, typeNode);
382
+ this.finishUpdate(updated, node);
383
+ return updated;
384
+ }
385
+ return node;
386
+ }
387
+
388
+ updateCaseBlock(node: CaseBlock, clauses: NodeList): CaseBlock {
389
+ if (clauses !== node.clauses) {
390
+ const updated = new CaseBlock(clauses);
391
+ this.finishUpdate(updated, node);
392
+ return updated;
393
+ }
394
+ return node;
395
+ }
396
+
397
+ updateCaseOrDefaultClause(
398
+ node: CaseOrDefaultClause,
399
+ expression: Expression | undefined,
400
+ statements: NodeList,
401
+ ): CaseOrDefaultClause {
402
+ if (expression !== node.expression || statements !== node.statements) {
403
+ const updated = new CaseOrDefaultClause(node.kind, expression, statements);
404
+ this.finishUpdate(updated, node);
405
+ return updated;
406
+ }
407
+ return node;
408
+ }
409
+
410
+ updateCatchClause(
411
+ node: CatchClause,
412
+ variableDeclaration: VariableDeclaration | undefined,
413
+ block: Block,
414
+ ): CatchClause {
415
+ if (variableDeclaration !== node.variableDeclaration || block !== node.block) {
416
+ const updated = new CatchClause(variableDeclaration, block);
417
+ this.finishUpdate(updated, node);
418
+ return updated;
419
+ }
420
+ return node;
421
+ }
422
+
423
+ updateClassDeclaration(
424
+ node: ClassDeclaration,
425
+ modifiers: ModifierList | undefined,
426
+ name: Identifier | undefined,
427
+ typeParameters: NodeList | undefined,
428
+ heritageClauses: NodeList | undefined,
429
+ members: NodeList,
430
+ ): ClassDeclaration {
431
+ if (
432
+ modifiers !== node.modifiers ||
433
+ name !== node.name ||
434
+ typeParameters !== node.typeParameters ||
435
+ heritageClauses !== node.heritageClauses ||
436
+ members !== node.members
437
+ ) {
438
+ const updated = new ClassDeclaration(modifiers, name, typeParameters, heritageClauses, members);
439
+ this.finishUpdate(updated, node);
440
+ return updated;
441
+ }
442
+ return node;
443
+ }
444
+
445
+ updateClassExpression(
446
+ node: ClassExpression,
447
+ modifiers: ModifierList | undefined,
448
+ name: Identifier | undefined,
449
+ typeParameters: NodeList | undefined,
450
+ heritageClauses: NodeList | undefined,
451
+ members: NodeList,
452
+ ): ClassExpression {
453
+ if (
454
+ modifiers !== node.modifiers ||
455
+ name !== node.name ||
456
+ typeParameters !== node.typeParameters ||
457
+ heritageClauses !== node.heritageClauses ||
458
+ members !== node.members
459
+ ) {
460
+ const updated = new ClassExpression(modifiers, name, typeParameters, heritageClauses, members);
461
+ this.finishUpdate(updated, node);
462
+ return updated;
463
+ }
464
+ return node;
465
+ }
466
+
467
+ updateClassStaticBlockDeclaration(
468
+ node: ClassStaticBlockDeclaration,
469
+ modifiers: ModifierList | undefined,
470
+ body: Block,
471
+ ): ClassStaticBlockDeclaration {
472
+ if (modifiers !== node.modifiers || body !== node.body) {
473
+ const updated = new ClassStaticBlockDeclaration(modifiers, body);
474
+ this.finishUpdate(updated, node);
475
+ return updated;
476
+ }
477
+ return node;
478
+ }
479
+
480
+ updateComputedPropertyName(node: ComputedPropertyName, expression: Expression): ComputedPropertyName {
481
+ if (expression !== node.expression) {
482
+ const updated = new ComputedPropertyName(expression);
483
+ this.finishUpdate(updated, node);
484
+ return updated;
485
+ }
486
+ return node;
487
+ }
488
+
489
+ updateConditionalExpression(
490
+ node: ConditionalExpression,
491
+ condition: Expression,
492
+ questionToken: Token,
493
+ whenTrue: Expression,
494
+ colonToken: Token,
495
+ whenFalse: Expression,
496
+ ): ConditionalExpression {
497
+ if (
498
+ condition !== node.condition ||
499
+ questionToken !== node.questionToken ||
500
+ whenTrue !== node.whenTrue ||
501
+ colonToken !== node.colonToken ||
502
+ whenFalse !== node.whenFalse
503
+ ) {
504
+ const updated = new ConditionalExpression(condition, questionToken, whenTrue, colonToken, whenFalse);
505
+ this.finishUpdate(updated, node);
506
+ return updated;
507
+ }
508
+ return node;
509
+ }
510
+
511
+ updateConditionalTypeNode(
512
+ node: ConditionalTypeNode,
513
+ checkType: TypeNode,
514
+ extendsType: TypeNode,
515
+ trueType: TypeNode,
516
+ falseType: TypeNode,
517
+ ): ConditionalTypeNode {
518
+ if (
519
+ checkType !== node.checkType ||
520
+ extendsType !== node.extendsType ||
521
+ trueType !== node.trueType ||
522
+ falseType !== node.falseType
523
+ ) {
524
+ const updated = new ConditionalTypeNode(checkType, extendsType, trueType, falseType);
525
+ this.finishUpdate(updated, node);
526
+ return updated;
527
+ }
528
+ return node;
529
+ }
530
+
531
+ updateConstructorDeclaration(
532
+ node: ConstructorDeclaration,
533
+ modifiers: ModifierList | undefined,
534
+ typeParameters: NodeList | undefined,
535
+ parameters: NodeList,
536
+ typeNode: TypeNode | undefined,
537
+ fullSignature: TypeNode | undefined,
538
+ body: FunctionBody | undefined,
539
+ ): ConstructorDeclaration {
540
+ if (
541
+ modifiers !== node.modifiers ||
542
+ typeParameters !== node.typeParameters ||
543
+ parameters !== node.parameters ||
544
+ typeNode !== node.type ||
545
+ fullSignature !== node.fullSignature ||
546
+ body !== node.body
547
+ ) {
548
+ const updated = new ConstructorDeclaration(modifiers, typeParameters, parameters, typeNode, fullSignature, body);
549
+ this.finishUpdate(updated, node);
550
+ return updated;
551
+ }
552
+ return node;
553
+ }
554
+
555
+ updateConstructorTypeNode(
556
+ node: ConstructorTypeNode,
557
+ modifiers: ModifierList | undefined,
558
+ typeParameters: NodeList | undefined,
559
+ parameters: NodeList,
560
+ typeNode: TypeNode | undefined,
561
+ ): ConstructorTypeNode {
562
+ if (
563
+ modifiers !== node.modifiers ||
564
+ typeParameters !== node.typeParameters ||
565
+ parameters !== node.parameters ||
566
+ typeNode !== node.type
567
+ ) {
568
+ const updated = new ConstructorTypeNode(modifiers, typeParameters, parameters, typeNode);
569
+ this.finishUpdate(updated, node);
570
+ return updated;
571
+ }
572
+ return node;
573
+ }
574
+
575
+ updateConstructSignatureDeclaration(
576
+ node: ConstructSignatureDeclaration,
577
+ typeParameters: NodeList | undefined,
578
+ parameters: NodeList,
579
+ typeNode: TypeNode | undefined,
580
+ ): ConstructSignatureDeclaration {
581
+ if (typeParameters !== node.typeParameters || parameters !== node.parameters || typeNode !== node.type) {
582
+ const updated = new ConstructSignatureDeclaration(typeParameters, parameters, typeNode);
583
+ this.finishUpdate(updated, node);
584
+ return updated;
585
+ }
586
+ return node;
587
+ }
588
+
589
+ updateContinueStatement(node: ContinueStatement, label: Identifier | undefined): ContinueStatement {
590
+ if (label !== node.label) {
591
+ const updated = new ContinueStatement(label);
592
+ this.finishUpdate(updated, node);
593
+ return updated;
594
+ }
595
+ return node;
596
+ }
597
+
598
+ updateDecorator(node: Decorator, expression: LeftHandSideExpression): Decorator {
599
+ if (expression !== node.expression) {
600
+ const updated = new Decorator(expression);
601
+ this.finishUpdate(updated, node);
602
+ return updated;
603
+ }
604
+ return node;
605
+ }
606
+
607
+ updateDeleteExpression(node: DeleteExpression, expression: Expression): DeleteExpression {
608
+ if (expression !== node.expression) {
609
+ const updated = new DeleteExpression(expression);
610
+ this.finishUpdate(updated, node);
611
+ return updated;
612
+ }
613
+ return node;
614
+ }
615
+
616
+ updateDoStatement(node: DoStatement, statement: Statement, expression: Expression): DoStatement {
617
+ if (statement !== node.statement || expression !== node.expression) {
618
+ const updated = new DoStatement(statement, expression);
619
+ this.finishUpdate(updated, node);
620
+ return updated;
621
+ }
622
+ return node;
623
+ }
624
+
625
+ updateElementAccessExpression(
626
+ node: ElementAccessExpression,
627
+ expression: Expression,
628
+ questionDotToken: Token | undefined,
629
+ argumentExpression: Expression,
630
+ flags: NodeFlags,
631
+ ): ElementAccessExpression {
632
+ if (
633
+ expression !== node.expression ||
634
+ questionDotToken !== node.questionDotToken ||
635
+ argumentExpression !== node.argumentExpression ||
636
+ flags !== node.flags
637
+ ) {
638
+ const updated = new ElementAccessExpression(expression, questionDotToken, argumentExpression, flags);
639
+ this.finishUpdate(updated, node);
640
+ return updated;
641
+ }
642
+ return node;
643
+ }
644
+
645
+ updateEnumDeclaration(
646
+ node: EnumDeclaration,
647
+ modifiers: ModifierList | undefined,
648
+ name: Identifier,
649
+ members: NodeList,
650
+ ): EnumDeclaration {
651
+ if (modifiers !== node.modifiers || name !== node.name || members !== node.members) {
652
+ const updated = new EnumDeclaration(modifiers, name, members);
653
+ this.finishUpdate(updated, node);
654
+ return updated;
655
+ }
656
+ return node;
657
+ }
658
+
659
+ updateEnumMember(node: EnumMember, name: PropertyName, initializer: Expression | undefined): EnumMember {
660
+ if (name !== node.name || initializer !== node.initializer) {
661
+ const updated = new EnumMember(name, initializer);
662
+ this.finishUpdate(updated, node);
663
+ return updated;
664
+ }
665
+ return node;
666
+ }
667
+
668
+ updateExportAssignment(
669
+ node: ExportAssignment,
670
+ modifiers: ModifierList | undefined,
671
+ isExportEquals: boolean,
672
+ typeNode: TypeNode | undefined,
673
+ expression: Expression,
674
+ ): ExportAssignment {
675
+ if (
676
+ modifiers !== node.modifiers ||
677
+ isExportEquals !== node.isExportEquals ||
678
+ typeNode !== node.type ||
679
+ expression !== node.expression
680
+ ) {
681
+ const updated = new ExportAssignment(modifiers, isExportEquals, typeNode, expression);
682
+ this.finishUpdate(updated, node);
683
+ return updated;
684
+ }
685
+ return node;
686
+ }
687
+
688
+ updateExportDeclaration(
689
+ node: ExportDeclaration,
690
+ modifiers: ModifierList | undefined,
691
+ isTypeOnly: boolean,
692
+ exportClause: NamedExportBindings | undefined,
693
+ moduleSpecifier: Expression | undefined,
694
+ attributes: ImportAttributes | undefined,
695
+ ): ExportDeclaration {
696
+ if (
697
+ modifiers !== node.modifiers ||
698
+ isTypeOnly !== node.isTypeOnly ||
699
+ exportClause !== node.exportClause ||
700
+ moduleSpecifier !== node.moduleSpecifier ||
701
+ attributes !== node.attributes
702
+ ) {
703
+ const updated = new ExportDeclaration(modifiers, isTypeOnly, exportClause, moduleSpecifier, attributes);
704
+ this.finishUpdate(updated, node);
705
+ return updated;
706
+ }
707
+ return node;
708
+ }
709
+
710
+ updateExportSpecifier(
711
+ node: ExportSpecifier,
712
+ isTypeOnly: boolean,
713
+ propertyName: ModuleExportName | undefined,
714
+ name: ModuleExportName,
715
+ ): ExportSpecifier {
716
+ if (isTypeOnly !== node.isTypeOnly || propertyName !== node.propertyName || name !== node.name) {
717
+ const updated = new ExportSpecifier(isTypeOnly, propertyName, name);
718
+ this.finishUpdate(updated, node);
719
+ return updated;
720
+ }
721
+ return node;
722
+ }
723
+
724
+ updateExpressionStatement(node: ExpressionStatement, expression: Expression): ExpressionStatement {
725
+ if (expression !== node.expression) {
726
+ const updated = new ExpressionStatement(expression);
727
+ this.finishUpdate(updated, node);
728
+ return updated;
729
+ }
730
+ return node;
731
+ }
732
+
733
+ updateExpressionWithTypeArguments(
734
+ node: ExpressionWithTypeArguments,
735
+ expression: Expression,
736
+ typeArguments: NodeList | undefined,
737
+ ): ExpressionWithTypeArguments {
738
+ if (expression !== node.expression || typeArguments !== node.typeArguments) {
739
+ const updated = new ExpressionWithTypeArguments(expression, typeArguments);
740
+ this.finishUpdate(updated, node);
741
+ return updated;
742
+ }
743
+ return node;
744
+ }
745
+
746
+ updateExternalModuleReference(node: ExternalModuleReference, expression: Expression): ExternalModuleReference {
747
+ if (expression !== node.expression) {
748
+ const updated = new ExternalModuleReference(expression);
749
+ this.finishUpdate(updated, node);
750
+ return updated;
751
+ }
752
+ return node;
753
+ }
754
+
755
+ updateForInOrOfStatement(
756
+ node: ForInOrOfStatement,
757
+ awaitModifier: Token | undefined,
758
+ initializer: ForInitializer,
759
+ expression: Expression,
760
+ statement: Statement,
761
+ ): ForInOrOfStatement {
762
+ if (
763
+ awaitModifier !== node.awaitModifier ||
764
+ initializer !== node.initializer ||
765
+ expression !== node.expression ||
766
+ statement !== node.statement
767
+ ) {
768
+ const updated = new ForInOrOfStatement(node.kind, awaitModifier, initializer, expression, statement);
769
+ this.finishUpdate(updated, node);
770
+ return updated;
771
+ }
772
+ return node;
773
+ }
774
+
775
+ updateForStatement(
776
+ node: ForStatement,
777
+ initializer: ForInitializer | undefined,
778
+ condition: Expression | undefined,
779
+ incrementor: Expression | undefined,
780
+ statement: Statement,
781
+ ): ForStatement {
782
+ if (
783
+ initializer !== node.initializer ||
784
+ condition !== node.condition ||
785
+ incrementor !== node.incrementor ||
786
+ statement !== node.statement
787
+ ) {
788
+ const updated = new ForStatement(initializer, condition, incrementor, statement);
789
+ this.finishUpdate(updated, node);
790
+ return updated;
791
+ }
792
+ return node;
793
+ }
794
+
795
+ updateFunctionDeclaration(
796
+ node: FunctionDeclaration,
797
+ modifiers: ModifierList | undefined,
798
+ asteriskToken: Token | undefined,
799
+ name: Identifier | undefined,
800
+ typeParameters: NodeList | undefined,
801
+ parameters: NodeList,
802
+ typeNode: TypeNode | undefined,
803
+ fullSignature: TypeNode | undefined,
804
+ body: FunctionBody | undefined,
805
+ ): FunctionDeclaration {
806
+ if (
807
+ modifiers !== node.modifiers ||
808
+ asteriskToken !== node.asteriskToken ||
809
+ name !== node.name ||
810
+ typeParameters !== node.typeParameters ||
811
+ parameters !== node.parameters ||
812
+ typeNode !== node.type ||
813
+ fullSignature !== node.fullSignature ||
814
+ body !== node.body
815
+ ) {
816
+ const updated = new FunctionDeclaration(
817
+ modifiers,
818
+ asteriskToken,
819
+ name,
820
+ typeParameters,
821
+ parameters,
822
+ typeNode,
823
+ fullSignature,
824
+ body,
825
+ );
826
+ this.finishUpdate(updated, node);
827
+ return updated;
828
+ }
829
+ return node;
830
+ }
831
+
832
+ updateFunctionExpression(
833
+ node: FunctionExpression,
834
+ modifiers: ModifierList | undefined,
835
+ asteriskToken: Token | undefined,
836
+ name: Identifier | undefined,
837
+ typeParameters: NodeList | undefined,
838
+ parameters: NodeList,
839
+ typeNode: TypeNode | undefined,
840
+ fullSignature: TypeNode | undefined,
841
+ body: FunctionBody,
842
+ ): FunctionExpression {
843
+ if (
844
+ modifiers !== node.modifiers ||
845
+ asteriskToken !== node.asteriskToken ||
846
+ name !== node.name ||
847
+ typeParameters !== node.typeParameters ||
848
+ parameters !== node.parameters ||
849
+ typeNode !== node.type ||
850
+ fullSignature !== node.fullSignature ||
851
+ body !== node.body
852
+ ) {
853
+ const updated = new FunctionExpression(
854
+ modifiers,
855
+ asteriskToken,
856
+ name,
857
+ typeParameters,
858
+ parameters,
859
+ typeNode,
860
+ fullSignature,
861
+ body,
862
+ );
863
+ this.finishUpdate(updated, node);
864
+ return updated;
865
+ }
866
+ return node;
867
+ }
868
+
869
+ updateFunctionTypeNode(
870
+ node: FunctionTypeNode,
871
+ typeParameters: NodeList | undefined,
872
+ parameters: NodeList,
873
+ typeNode: TypeNode | undefined,
874
+ ): FunctionTypeNode {
875
+ if (typeParameters !== node.typeParameters || parameters !== node.parameters || typeNode !== node.type) {
876
+ const updated = new FunctionTypeNode(typeParameters, parameters, typeNode);
877
+ this.finishUpdate(updated, node);
878
+ return updated;
879
+ }
880
+ return node;
881
+ }
882
+
883
+ updateGetAccessorDeclaration(
884
+ node: GetAccessorDeclaration,
885
+ modifiers: ModifierList | undefined,
886
+ name: PropertyName,
887
+ typeParameters: NodeList | undefined,
888
+ parameters: NodeList,
889
+ typeNode: TypeNode | undefined,
890
+ fullSignature: TypeNode | undefined,
891
+ body: FunctionBody | undefined,
892
+ ): GetAccessorDeclaration {
893
+ if (
894
+ modifiers !== node.modifiers ||
895
+ name !== node.name ||
896
+ typeParameters !== node.typeParameters ||
897
+ parameters !== node.parameters ||
898
+ typeNode !== node.type ||
899
+ fullSignature !== node.fullSignature ||
900
+ body !== node.body
901
+ ) {
902
+ const updated = new GetAccessorDeclaration(
903
+ modifiers,
904
+ name,
905
+ typeParameters,
906
+ parameters,
907
+ typeNode,
908
+ fullSignature,
909
+ body,
910
+ );
911
+ this.finishUpdate(updated, node);
912
+ return updated;
913
+ }
914
+ return node;
915
+ }
916
+
917
+ updateHeritageClause(node: HeritageClause, token: SyntaxKind, types: NodeList): HeritageClause {
918
+ if (token !== node.token || types !== node.types) {
919
+ const updated = new HeritageClause(token, types);
920
+ this.finishUpdate(updated, node);
921
+ return updated;
922
+ }
923
+ return node;
924
+ }
925
+
926
+ updateIfStatement(
927
+ node: IfStatement,
928
+ expression: Expression,
929
+ thenStatement: Statement,
930
+ elseStatement: Statement | undefined,
931
+ ): IfStatement {
932
+ if (
933
+ expression !== node.expression ||
934
+ thenStatement !== node.thenStatement ||
935
+ elseStatement !== node.elseStatement
936
+ ) {
937
+ const updated = new IfStatement(expression, thenStatement, elseStatement);
938
+ this.finishUpdate(updated, node);
939
+ return updated;
940
+ }
941
+ return node;
942
+ }
943
+
944
+ updateImportAttribute(
945
+ node: ImportAttribute,
946
+ name: ImportAttributeName | undefined,
947
+ value: Expression,
948
+ ): ImportAttribute {
949
+ if (name !== node.name || value !== node.value) {
950
+ const updated = new ImportAttribute(name, value);
951
+ this.finishUpdate(updated, node);
952
+ return updated;
953
+ }
954
+ return node;
955
+ }
956
+
957
+ updateImportAttributes(
958
+ node: ImportAttributes,
959
+ token: SyntaxKind,
960
+ attributes: NodeList,
961
+ multiLine: boolean,
962
+ ): ImportAttributes {
963
+ if (token !== node.token || attributes !== node.attributes || multiLine !== node.multiLine) {
964
+ const updated = new ImportAttributes(token, attributes, multiLine);
965
+ this.finishUpdate(updated, node);
966
+ return updated;
967
+ }
968
+ return node;
969
+ }
970
+
971
+ updateImportClause(
972
+ node: ImportClause,
973
+ phaseModifier: SyntaxKind | undefined,
974
+ name: Identifier | undefined,
975
+ namedBindings: NamedImportBindings | undefined,
976
+ ): ImportClause {
977
+ if (phaseModifier !== node.phaseModifier || name !== node.name || namedBindings !== node.namedBindings) {
978
+ const updated = new ImportClause(phaseModifier, name, namedBindings);
979
+ this.finishUpdate(updated, node);
980
+ return updated;
981
+ }
982
+ return node;
983
+ }
984
+
985
+ updateImportDeclaration(
986
+ node: ImportDeclaration,
987
+ modifiers: ModifierList | undefined,
988
+ importClause: ImportClause | undefined,
989
+ moduleSpecifier: Expression,
990
+ attributes: ImportAttributes | undefined,
991
+ ): ImportDeclaration {
992
+ if (
993
+ modifiers !== node.modifiers ||
994
+ importClause !== node.importClause ||
995
+ moduleSpecifier !== node.moduleSpecifier ||
996
+ attributes !== node.attributes
997
+ ) {
998
+ const updated = new ImportDeclaration(node.kind, modifiers, importClause, moduleSpecifier, attributes);
999
+ this.finishUpdate(updated, node);
1000
+ return updated;
1001
+ }
1002
+ return node;
1003
+ }
1004
+
1005
+ updateImportEqualsDeclaration(
1006
+ node: ImportEqualsDeclaration,
1007
+ modifiers: ModifierList | undefined,
1008
+ isTypeOnly: boolean,
1009
+ name: Identifier,
1010
+ moduleReference: ModuleReference,
1011
+ ): ImportEqualsDeclaration {
1012
+ if (
1013
+ modifiers !== node.modifiers ||
1014
+ isTypeOnly !== node.isTypeOnly ||
1015
+ name !== node.name ||
1016
+ moduleReference !== node.moduleReference
1017
+ ) {
1018
+ const updated = new ImportEqualsDeclaration(modifiers, isTypeOnly, name, moduleReference);
1019
+ this.finishUpdate(updated, node);
1020
+ return updated;
1021
+ }
1022
+ return node;
1023
+ }
1024
+
1025
+ updateImportSpecifier(
1026
+ node: ImportSpecifier,
1027
+ isTypeOnly: boolean,
1028
+ propertyName: ModuleExportName | undefined,
1029
+ name: Identifier,
1030
+ ): ImportSpecifier {
1031
+ if (isTypeOnly !== node.isTypeOnly || propertyName !== node.propertyName || name !== node.name) {
1032
+ const updated = new ImportSpecifier(isTypeOnly, propertyName, name);
1033
+ this.finishUpdate(updated, node);
1034
+ return updated;
1035
+ }
1036
+ return node;
1037
+ }
1038
+
1039
+ updateImportTypeNode(
1040
+ node: ImportTypeNode,
1041
+ isTypeOf: boolean,
1042
+ argument: TypeNode,
1043
+ attributes: ImportAttributes | undefined,
1044
+ qualifier: EntityName | undefined,
1045
+ typeArguments: NodeList | undefined,
1046
+ ): ImportTypeNode {
1047
+ if (
1048
+ isTypeOf !== node.isTypeOf ||
1049
+ argument !== node.argument ||
1050
+ attributes !== node.attributes ||
1051
+ qualifier !== node.qualifier ||
1052
+ typeArguments !== node.typeArguments
1053
+ ) {
1054
+ const updated = new ImportTypeNode(isTypeOf, argument, attributes, qualifier, typeArguments);
1055
+ this.finishUpdate(updated, node);
1056
+ return updated;
1057
+ }
1058
+ return node;
1059
+ }
1060
+
1061
+ updateIndexedAccessTypeNode(
1062
+ node: IndexedAccessTypeNode,
1063
+ objectType: TypeNode,
1064
+ indexType: TypeNode,
1065
+ ): IndexedAccessTypeNode {
1066
+ if (objectType !== node.objectType || indexType !== node.indexType) {
1067
+ const updated = new IndexedAccessTypeNode(objectType, indexType);
1068
+ this.finishUpdate(updated, node);
1069
+ return updated;
1070
+ }
1071
+ return node;
1072
+ }
1073
+
1074
+ updateIndexSignatureDeclaration(
1075
+ node: IndexSignatureDeclaration,
1076
+ modifiers: ModifierList | undefined,
1077
+ parameters: NodeList,
1078
+ typeNode: TypeNode | undefined,
1079
+ ): IndexSignatureDeclaration {
1080
+ if (modifiers !== node.modifiers || parameters !== node.parameters || typeNode !== node.type) {
1081
+ const updated = new IndexSignatureDeclaration(modifiers, parameters, typeNode);
1082
+ this.finishUpdate(updated, node);
1083
+ return updated;
1084
+ }
1085
+ return node;
1086
+ }
1087
+
1088
+ updateInferTypeNode(node: InferTypeNode, typeParameter: TypeParameterDeclaration): InferTypeNode {
1089
+ if (typeParameter !== node.typeParameter) {
1090
+ const updated = new InferTypeNode(typeParameter);
1091
+ this.finishUpdate(updated, node);
1092
+ return updated;
1093
+ }
1094
+ return node;
1095
+ }
1096
+
1097
+ updateInterfaceDeclaration(
1098
+ node: InterfaceDeclaration,
1099
+ modifiers: ModifierList | undefined,
1100
+ name: Identifier,
1101
+ typeParameters: NodeList | undefined,
1102
+ heritageClauses: NodeList | undefined,
1103
+ members: NodeList,
1104
+ ): InterfaceDeclaration {
1105
+ if (
1106
+ modifiers !== node.modifiers ||
1107
+ name !== node.name ||
1108
+ typeParameters !== node.typeParameters ||
1109
+ heritageClauses !== node.heritageClauses ||
1110
+ members !== node.members
1111
+ ) {
1112
+ const updated = new InterfaceDeclaration(modifiers, name, typeParameters, heritageClauses, members);
1113
+ this.finishUpdate(updated, node);
1114
+ return updated;
1115
+ }
1116
+ return node;
1117
+ }
1118
+
1119
+ updateIntersectionTypeNode(node: IntersectionTypeNode, types: NodeList): IntersectionTypeNode {
1120
+ if (types !== node.types) {
1121
+ const updated = new IntersectionTypeNode(types);
1122
+ this.finishUpdate(updated, node);
1123
+ return updated;
1124
+ }
1125
+ return node;
1126
+ }
1127
+
1128
+ updateJSDoc(node: JSDoc, comment: NodeList, tags: NodeList | undefined): JSDoc {
1129
+ if (comment !== node.comment || tags !== node.tags) {
1130
+ const updated = new JSDoc(comment, tags);
1131
+ this.finishUpdate(updated, node);
1132
+ return updated;
1133
+ }
1134
+ return node;
1135
+ }
1136
+
1137
+ updateJSDocAugmentsTag(
1138
+ node: JSDocAugmentsTag,
1139
+ tagName: Identifier,
1140
+ className: ExpressionWithTypeArguments,
1141
+ comment: NodeList | undefined,
1142
+ ): JSDocAugmentsTag {
1143
+ if (tagName !== node.tagName || className !== node.className || comment !== node.comment) {
1144
+ const updated = new JSDocAugmentsTag(tagName, className, comment);
1145
+ this.finishUpdate(updated, node);
1146
+ return updated;
1147
+ }
1148
+ return node;
1149
+ }
1150
+
1151
+ updateJSDocCallbackTag(
1152
+ node: JSDocCallbackTag,
1153
+ tagName: Identifier,
1154
+ typeExpression: TypeNode,
1155
+ name: JSDocFullName | undefined,
1156
+ comment: NodeList | undefined,
1157
+ ): JSDocCallbackTag {
1158
+ if (
1159
+ tagName !== node.tagName ||
1160
+ typeExpression !== node.typeExpression ||
1161
+ name !== node.name ||
1162
+ comment !== node.comment
1163
+ ) {
1164
+ const updated = new JSDocCallbackTag(tagName, typeExpression, name, comment);
1165
+ this.finishUpdate(updated, node);
1166
+ return updated;
1167
+ }
1168
+ return node;
1169
+ }
1170
+
1171
+ updateJSDocDeprecatedTag(
1172
+ node: JSDocDeprecatedTag,
1173
+ tagName: Identifier,
1174
+ comment: NodeList | undefined,
1175
+ ): JSDocDeprecatedTag {
1176
+ if (tagName !== node.tagName || comment !== node.comment) {
1177
+ const updated = new JSDocDeprecatedTag(tagName, comment);
1178
+ this.finishUpdate(updated, node);
1179
+ return updated;
1180
+ }
1181
+ return node;
1182
+ }
1183
+
1184
+ updateJSDocImplementsTag(
1185
+ node: JSDocImplementsTag,
1186
+ tagName: Identifier,
1187
+ className: ExpressionWithTypeArguments,
1188
+ comment: NodeList | undefined,
1189
+ ): JSDocImplementsTag {
1190
+ if (tagName !== node.tagName || className !== node.className || comment !== node.comment) {
1191
+ const updated = new JSDocImplementsTag(tagName, className, comment);
1192
+ this.finishUpdate(updated, node);
1193
+ return updated;
1194
+ }
1195
+ return node;
1196
+ }
1197
+
1198
+ updateJSDocImportTag(
1199
+ node: JSDocImportTag,
1200
+ tagName: Identifier,
1201
+ importClause: ImportClause | undefined,
1202
+ moduleSpecifier: Expression,
1203
+ attributes: ImportAttributes | undefined,
1204
+ comment: NodeList | undefined,
1205
+ ): JSDocImportTag {
1206
+ if (
1207
+ tagName !== node.tagName ||
1208
+ importClause !== node.importClause ||
1209
+ moduleSpecifier !== node.moduleSpecifier ||
1210
+ attributes !== node.attributes ||
1211
+ comment !== node.comment
1212
+ ) {
1213
+ const updated = new JSDocImportTag(tagName, importClause, moduleSpecifier, attributes, comment);
1214
+ this.finishUpdate(updated, node);
1215
+ return updated;
1216
+ }
1217
+ return node;
1218
+ }
1219
+
1220
+ updateJSDocLink(node: JSDocLink, name: EntityName | undefined, text: string): JSDocLink {
1221
+ if (name !== node.name || text !== node.text) {
1222
+ const updated = new JSDocLink(name, text);
1223
+ this.finishUpdate(updated, node);
1224
+ return updated;
1225
+ }
1226
+ return node;
1227
+ }
1228
+
1229
+ updateJSDocLinkCode(node: JSDocLinkCode, name: EntityName | undefined, text: string): JSDocLinkCode {
1230
+ if (name !== node.name || text !== node.text) {
1231
+ const updated = new JSDocLinkCode(name, text);
1232
+ this.finishUpdate(updated, node);
1233
+ return updated;
1234
+ }
1235
+ return node;
1236
+ }
1237
+
1238
+ updateJSDocLinkPlain(node: JSDocLinkPlain, name: EntityName | undefined, text: string): JSDocLinkPlain {
1239
+ if (name !== node.name || text !== node.text) {
1240
+ const updated = new JSDocLinkPlain(name, text);
1241
+ this.finishUpdate(updated, node);
1242
+ return updated;
1243
+ }
1244
+ return node;
1245
+ }
1246
+
1247
+ updateJSDocNameReference(node: JSDocNameReference, name: EntityName | undefined): JSDocNameReference {
1248
+ if (name !== node.name) {
1249
+ const updated = new JSDocNameReference(name);
1250
+ this.finishUpdate(updated, node);
1251
+ return updated;
1252
+ }
1253
+ return node;
1254
+ }
1255
+
1256
+ updateJSDocNonNullableType(node: JSDocNonNullableType, typeNode: TypeNode): JSDocNonNullableType {
1257
+ if (typeNode !== node.type) {
1258
+ const updated = new JSDocNonNullableType(typeNode);
1259
+ this.finishUpdate(updated, node);
1260
+ return updated;
1261
+ }
1262
+ return node;
1263
+ }
1264
+
1265
+ updateJSDocNullableType(node: JSDocNullableType, typeNode: TypeNode): JSDocNullableType {
1266
+ if (typeNode !== node.type) {
1267
+ const updated = new JSDocNullableType(typeNode);
1268
+ this.finishUpdate(updated, node);
1269
+ return updated;
1270
+ }
1271
+ return node;
1272
+ }
1273
+
1274
+ updateJSDocOptionalType(node: JSDocOptionalType, typeNode: TypeNode): JSDocOptionalType {
1275
+ if (typeNode !== node.type) {
1276
+ const updated = new JSDocOptionalType(typeNode);
1277
+ this.finishUpdate(updated, node);
1278
+ return updated;
1279
+ }
1280
+ return node;
1281
+ }
1282
+
1283
+ updateJSDocOverloadTag(
1284
+ node: JSDocOverloadTag,
1285
+ tagName: Identifier,
1286
+ typeExpression: TypeNode,
1287
+ comment: NodeList | undefined,
1288
+ ): JSDocOverloadTag {
1289
+ if (tagName !== node.tagName || typeExpression !== node.typeExpression || comment !== node.comment) {
1290
+ const updated = new JSDocOverloadTag(tagName, typeExpression, comment);
1291
+ this.finishUpdate(updated, node);
1292
+ return updated;
1293
+ }
1294
+ return node;
1295
+ }
1296
+
1297
+ updateJSDocOverrideTag(node: JSDocOverrideTag, tagName: Identifier, comment: NodeList | undefined): JSDocOverrideTag {
1298
+ if (tagName !== node.tagName || comment !== node.comment) {
1299
+ const updated = new JSDocOverrideTag(tagName, comment);
1300
+ this.finishUpdate(updated, node);
1301
+ return updated;
1302
+ }
1303
+ return node;
1304
+ }
1305
+
1306
+ updateJSDocParameterOrPropertyTag(
1307
+ node: JSDocParameterOrPropertyTag,
1308
+ tagName: Identifier,
1309
+ name: EntityName,
1310
+ isBracketed: boolean,
1311
+ typeExpression: TypeNode | undefined,
1312
+ isNameFirst: boolean,
1313
+ comment: NodeList | undefined,
1314
+ ): JSDocParameterOrPropertyTag {
1315
+ if (
1316
+ tagName !== node.tagName ||
1317
+ name !== node.name ||
1318
+ isBracketed !== node.isBracketed ||
1319
+ typeExpression !== node.typeExpression ||
1320
+ isNameFirst !== node.isNameFirst ||
1321
+ comment !== node.comment
1322
+ ) {
1323
+ const updated = new JSDocParameterOrPropertyTag(
1324
+ node.kind,
1325
+ tagName,
1326
+ name,
1327
+ isBracketed,
1328
+ typeExpression,
1329
+ isNameFirst,
1330
+ comment,
1331
+ );
1332
+ this.finishUpdate(updated, node);
1333
+ return updated;
1334
+ }
1335
+ return node;
1336
+ }
1337
+
1338
+ updateJSDocPrivateTag(node: JSDocPrivateTag, tagName: Identifier, comment: NodeList | undefined): JSDocPrivateTag {
1339
+ if (tagName !== node.tagName || comment !== node.comment) {
1340
+ const updated = new JSDocPrivateTag(tagName, comment);
1341
+ this.finishUpdate(updated, node);
1342
+ return updated;
1343
+ }
1344
+ return node;
1345
+ }
1346
+
1347
+ updateJSDocProtectedTag(
1348
+ node: JSDocProtectedTag,
1349
+ tagName: Identifier,
1350
+ comment: NodeList | undefined,
1351
+ ): JSDocProtectedTag {
1352
+ if (tagName !== node.tagName || comment !== node.comment) {
1353
+ const updated = new JSDocProtectedTag(tagName, comment);
1354
+ this.finishUpdate(updated, node);
1355
+ return updated;
1356
+ }
1357
+ return node;
1358
+ }
1359
+
1360
+ updateJSDocPublicTag(node: JSDocPublicTag, tagName: Identifier, comment: NodeList | undefined): JSDocPublicTag {
1361
+ if (tagName !== node.tagName || comment !== node.comment) {
1362
+ const updated = new JSDocPublicTag(tagName, comment);
1363
+ this.finishUpdate(updated, node);
1364
+ return updated;
1365
+ }
1366
+ return node;
1367
+ }
1368
+
1369
+ updateJSDocReadonlyTag(node: JSDocReadonlyTag, tagName: Identifier, comment: NodeList | undefined): JSDocReadonlyTag {
1370
+ if (tagName !== node.tagName || comment !== node.comment) {
1371
+ const updated = new JSDocReadonlyTag(tagName, comment);
1372
+ this.finishUpdate(updated, node);
1373
+ return updated;
1374
+ }
1375
+ return node;
1376
+ }
1377
+
1378
+ updateJSDocReturnTag(
1379
+ node: JSDocReturnTag,
1380
+ tagName: Identifier,
1381
+ typeExpression: TypeNode | undefined,
1382
+ comment: NodeList | undefined,
1383
+ ): JSDocReturnTag {
1384
+ if (tagName !== node.tagName || typeExpression !== node.typeExpression || comment !== node.comment) {
1385
+ const updated = new JSDocReturnTag(tagName, typeExpression, comment);
1386
+ this.finishUpdate(updated, node);
1387
+ return updated;
1388
+ }
1389
+ return node;
1390
+ }
1391
+
1392
+ updateJSDocSatisfiesTag(
1393
+ node: JSDocSatisfiesTag,
1394
+ tagName: Identifier,
1395
+ typeExpression: TypeNode,
1396
+ comment: NodeList | undefined,
1397
+ ): JSDocSatisfiesTag {
1398
+ if (tagName !== node.tagName || typeExpression !== node.typeExpression || comment !== node.comment) {
1399
+ const updated = new JSDocSatisfiesTag(tagName, typeExpression, comment);
1400
+ this.finishUpdate(updated, node);
1401
+ return updated;
1402
+ }
1403
+ return node;
1404
+ }
1405
+
1406
+ updateJSDocSeeTag(
1407
+ node: JSDocSeeTag,
1408
+ tagName: Identifier,
1409
+ nameExpression: TypeNode | undefined,
1410
+ comment: NodeList | undefined,
1411
+ ): JSDocSeeTag {
1412
+ if (tagName !== node.tagName || nameExpression !== node.nameExpression || comment !== node.comment) {
1413
+ const updated = new JSDocSeeTag(tagName, nameExpression, comment);
1414
+ this.finishUpdate(updated, node);
1415
+ return updated;
1416
+ }
1417
+ return node;
1418
+ }
1419
+
1420
+ updateJSDocSignature(
1421
+ node: JSDocSignature,
1422
+ typeParameters: NodeList | undefined,
1423
+ parameters: NodeList,
1424
+ typeNode: TypeNode | undefined,
1425
+ ): JSDocSignature {
1426
+ if (typeParameters !== node.typeParameters || parameters !== node.parameters || typeNode !== node.type) {
1427
+ const updated = new JSDocSignature(typeParameters, parameters, typeNode);
1428
+ this.finishUpdate(updated, node);
1429
+ return updated;
1430
+ }
1431
+ return node;
1432
+ }
1433
+
1434
+ updateJSDocTemplateTag(
1435
+ node: JSDocTemplateTag,
1436
+ tagName: Identifier,
1437
+ constraint: Node | undefined,
1438
+ typeParameters: NodeList,
1439
+ comment: NodeList | undefined,
1440
+ ): JSDocTemplateTag {
1441
+ if (
1442
+ tagName !== node.tagName ||
1443
+ constraint !== node.constraint ||
1444
+ typeParameters !== node.typeParameters ||
1445
+ comment !== node.comment
1446
+ ) {
1447
+ const updated = new JSDocTemplateTag(tagName, constraint, typeParameters, comment);
1448
+ this.finishUpdate(updated, node);
1449
+ return updated;
1450
+ }
1451
+ return node;
1452
+ }
1453
+
1454
+ updateJSDocThisTag(
1455
+ node: JSDocThisTag,
1456
+ tagName: Identifier,
1457
+ typeExpression: TypeNode,
1458
+ comment: NodeList | undefined,
1459
+ ): JSDocThisTag {
1460
+ if (tagName !== node.tagName || typeExpression !== node.typeExpression || comment !== node.comment) {
1461
+ const updated = new JSDocThisTag(tagName, typeExpression, comment);
1462
+ this.finishUpdate(updated, node);
1463
+ return updated;
1464
+ }
1465
+ return node;
1466
+ }
1467
+
1468
+ updateJSDocThrowsTag(
1469
+ node: JSDocThrowsTag,
1470
+ tagName: Identifier,
1471
+ typeExpression: TypeNode | undefined,
1472
+ comment: NodeList | undefined,
1473
+ ): JSDocThrowsTag {
1474
+ if (tagName !== node.tagName || typeExpression !== node.typeExpression || comment !== node.comment) {
1475
+ const updated = new JSDocThrowsTag(tagName, typeExpression, comment);
1476
+ this.finishUpdate(updated, node);
1477
+ return updated;
1478
+ }
1479
+ return node;
1480
+ }
1481
+
1482
+ updateJSDocTypedefTag(
1483
+ node: JSDocTypedefTag,
1484
+ tagName: Identifier,
1485
+ typeExpression: Node | undefined,
1486
+ name: JSDocFullName | undefined,
1487
+ comment: NodeList | undefined,
1488
+ ): JSDocTypedefTag {
1489
+ if (
1490
+ tagName !== node.tagName ||
1491
+ typeExpression !== node.typeExpression ||
1492
+ name !== node.name ||
1493
+ comment !== node.comment
1494
+ ) {
1495
+ const updated = new JSDocTypedefTag(tagName, typeExpression, name, comment);
1496
+ this.finishUpdate(updated, node);
1497
+ return updated;
1498
+ }
1499
+ return node;
1500
+ }
1501
+
1502
+ updateJSDocTypeExpression(node: JSDocTypeExpression, typeNode: TypeNode): JSDocTypeExpression {
1503
+ if (typeNode !== node.type) {
1504
+ const updated = new JSDocTypeExpression(typeNode);
1505
+ this.finishUpdate(updated, node);
1506
+ return updated;
1507
+ }
1508
+ return node;
1509
+ }
1510
+
1511
+ updateJSDocTypeLiteral(
1512
+ node: JSDocTypeLiteral,
1513
+ jsdocPropertyTags: Node[] | undefined,
1514
+ isArrayType: boolean,
1515
+ ): JSDocTypeLiteral {
1516
+ if (jsdocPropertyTags !== node.jsdocPropertyTags || isArrayType !== node.isArrayType) {
1517
+ const updated = new JSDocTypeLiteral(jsdocPropertyTags, isArrayType);
1518
+ this.finishUpdate(updated, node);
1519
+ return updated;
1520
+ }
1521
+ return node;
1522
+ }
1523
+
1524
+ updateJSDocTypeTag(
1525
+ node: JSDocTypeTag,
1526
+ tagName: Identifier,
1527
+ typeExpression: Node,
1528
+ comment: NodeList | undefined,
1529
+ ): JSDocTypeTag {
1530
+ if (tagName !== node.tagName || typeExpression !== node.typeExpression || comment !== node.comment) {
1531
+ const updated = new JSDocTypeTag(tagName, typeExpression, comment);
1532
+ this.finishUpdate(updated, node);
1533
+ return updated;
1534
+ }
1535
+ return node;
1536
+ }
1537
+
1538
+ updateJSDocUnknownTag(node: JSDocUnknownTag, tagName: Identifier, comment: NodeList | undefined): JSDocUnknownTag {
1539
+ if (tagName !== node.tagName || comment !== node.comment) {
1540
+ const updated = new JSDocUnknownTag(tagName, comment);
1541
+ this.finishUpdate(updated, node);
1542
+ return updated;
1543
+ }
1544
+ return node;
1545
+ }
1546
+
1547
+ updateJSDocVariadicType(node: JSDocVariadicType, typeNode: TypeNode): JSDocVariadicType {
1548
+ if (typeNode !== node.type) {
1549
+ const updated = new JSDocVariadicType(typeNode);
1550
+ this.finishUpdate(updated, node);
1551
+ return updated;
1552
+ }
1553
+ return node;
1554
+ }
1555
+
1556
+ updateJsxAttribute(
1557
+ node: JsxAttribute,
1558
+ name: JsxAttributeName,
1559
+ initializer: JsxAttributeValue | undefined,
1560
+ ): JsxAttribute {
1561
+ if (name !== node.name || initializer !== node.initializer) {
1562
+ const updated = new JsxAttribute(name, initializer);
1563
+ this.finishUpdate(updated, node);
1564
+ return updated;
1565
+ }
1566
+ return node;
1567
+ }
1568
+
1569
+ updateJsxAttributes(node: JsxAttributes, properties: NodeList): JsxAttributes {
1570
+ if (properties !== node.properties) {
1571
+ const updated = new JsxAttributes(properties);
1572
+ this.finishUpdate(updated, node);
1573
+ return updated;
1574
+ }
1575
+ return node;
1576
+ }
1577
+
1578
+ updateJsxClosingElement(node: JsxClosingElement, tagName: JsxTagNameExpression): JsxClosingElement {
1579
+ if (tagName !== node.tagName) {
1580
+ const updated = new JsxClosingElement(tagName);
1581
+ this.finishUpdate(updated, node);
1582
+ return updated;
1583
+ }
1584
+ return node;
1585
+ }
1586
+
1587
+ updateJsxElement(
1588
+ node: JsxElement,
1589
+ openingElement: JsxOpeningElement,
1590
+ children: NodeList,
1591
+ closingElement: JsxClosingElement,
1592
+ ): JsxElement {
1593
+ if (
1594
+ openingElement !== node.openingElement ||
1595
+ children !== node.children ||
1596
+ closingElement !== node.closingElement
1597
+ ) {
1598
+ const updated = new JsxElement(openingElement, children, closingElement);
1599
+ this.finishUpdate(updated, node);
1600
+ return updated;
1601
+ }
1602
+ return node;
1603
+ }
1604
+
1605
+ updateJsxExpression(
1606
+ node: JsxExpression,
1607
+ dotDotDotToken: Token | undefined,
1608
+ expression: Expression | undefined,
1609
+ ): JsxExpression {
1610
+ if (dotDotDotToken !== node.dotDotDotToken || expression !== node.expression) {
1611
+ const updated = new JsxExpression(dotDotDotToken, expression);
1612
+ this.finishUpdate(updated, node);
1613
+ return updated;
1614
+ }
1615
+ return node;
1616
+ }
1617
+
1618
+ updateJsxFragment(
1619
+ node: JsxFragment,
1620
+ openingFragment: JsxOpeningFragment,
1621
+ children: NodeList,
1622
+ closingFragment: JsxClosingFragment,
1623
+ ): JsxFragment {
1624
+ if (
1625
+ openingFragment !== node.openingFragment ||
1626
+ children !== node.children ||
1627
+ closingFragment !== node.closingFragment
1628
+ ) {
1629
+ const updated = new JsxFragment(openingFragment, children, closingFragment);
1630
+ this.finishUpdate(updated, node);
1631
+ return updated;
1632
+ }
1633
+ return node;
1634
+ }
1635
+
1636
+ updateJsxNamespacedName(node: JsxNamespacedName, namespace: Identifier, name: Identifier): JsxNamespacedName {
1637
+ if (namespace !== node.namespace || name !== node.name) {
1638
+ const updated = new JsxNamespacedName(namespace, name);
1639
+ this.finishUpdate(updated, node);
1640
+ return updated;
1641
+ }
1642
+ return node;
1643
+ }
1644
+
1645
+ updateJsxOpeningElement(
1646
+ node: JsxOpeningElement,
1647
+ tagName: JsxTagNameExpression,
1648
+ typeArguments: NodeList | undefined,
1649
+ attributes: JsxAttributes,
1650
+ ): JsxOpeningElement {
1651
+ if (tagName !== node.tagName || typeArguments !== node.typeArguments || attributes !== node.attributes) {
1652
+ const updated = new JsxOpeningElement(tagName, typeArguments, attributes);
1653
+ this.finishUpdate(updated, node);
1654
+ return updated;
1655
+ }
1656
+ return node;
1657
+ }
1658
+
1659
+ updateJsxSelfClosingElement(
1660
+ node: JsxSelfClosingElement,
1661
+ tagName: JsxTagNameExpression,
1662
+ typeArguments: NodeList | undefined,
1663
+ attributes: JsxAttributes,
1664
+ ): JsxSelfClosingElement {
1665
+ if (tagName !== node.tagName || typeArguments !== node.typeArguments || attributes !== node.attributes) {
1666
+ const updated = new JsxSelfClosingElement(tagName, typeArguments, attributes);
1667
+ this.finishUpdate(updated, node);
1668
+ return updated;
1669
+ }
1670
+ return node;
1671
+ }
1672
+
1673
+ updateJsxSpreadAttribute(node: JsxSpreadAttribute, expression: Expression): JsxSpreadAttribute {
1674
+ if (expression !== node.expression) {
1675
+ const updated = new JsxSpreadAttribute(expression);
1676
+ this.finishUpdate(updated, node);
1677
+ return updated;
1678
+ }
1679
+ return node;
1680
+ }
1681
+
1682
+ updateLabeledStatement(node: LabeledStatement, label: Identifier, statement: Statement): LabeledStatement {
1683
+ if (label !== node.label || statement !== node.statement) {
1684
+ const updated = new LabeledStatement(label, statement);
1685
+ this.finishUpdate(updated, node);
1686
+ return updated;
1687
+ }
1688
+ return node;
1689
+ }
1690
+
1691
+ updateLiteralTypeNode(node: LiteralTypeNode, literal: Node): LiteralTypeNode {
1692
+ if (literal !== node.literal) {
1693
+ const updated = new LiteralTypeNode(literal);
1694
+ this.finishUpdate(updated, node);
1695
+ return updated;
1696
+ }
1697
+ return node;
1698
+ }
1699
+
1700
+ updateMappedTypeNode(
1701
+ node: MappedTypeNode,
1702
+ readonlyToken: Token | undefined,
1703
+ typeParameter: TypeParameterDeclaration,
1704
+ nameType: TypeNode | undefined,
1705
+ questionToken: Token | undefined,
1706
+ typeNode: TypeNode | undefined,
1707
+ members: NodeList | undefined,
1708
+ ): MappedTypeNode {
1709
+ if (
1710
+ readonlyToken !== node.readonlyToken ||
1711
+ typeParameter !== node.typeParameter ||
1712
+ nameType !== node.nameType ||
1713
+ questionToken !== node.questionToken ||
1714
+ typeNode !== node.type ||
1715
+ members !== node.members
1716
+ ) {
1717
+ const updated = new MappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, typeNode, members);
1718
+ this.finishUpdate(updated, node);
1719
+ return updated;
1720
+ }
1721
+ return node;
1722
+ }
1723
+
1724
+ updateMetaProperty(node: MetaProperty, keywordToken: SyntaxKind, name: Identifier): MetaProperty {
1725
+ if (keywordToken !== node.keywordToken || name !== node.name) {
1726
+ const updated = new MetaProperty(keywordToken, name);
1727
+ this.finishUpdate(updated, node);
1728
+ return updated;
1729
+ }
1730
+ return node;
1731
+ }
1732
+
1733
+ updateMethodDeclaration(
1734
+ node: MethodDeclaration,
1735
+ modifiers: ModifierList | undefined,
1736
+ asteriskToken: Token | undefined,
1737
+ name: PropertyName,
1738
+ postfixToken: Token | undefined,
1739
+ typeParameters: NodeList | undefined,
1740
+ parameters: NodeList,
1741
+ typeNode: TypeNode | undefined,
1742
+ fullSignature: TypeNode | undefined,
1743
+ body: FunctionBody | undefined,
1744
+ ): MethodDeclaration {
1745
+ if (
1746
+ modifiers !== node.modifiers ||
1747
+ asteriskToken !== node.asteriskToken ||
1748
+ name !== node.name ||
1749
+ postfixToken !== node.postfixToken ||
1750
+ typeParameters !== node.typeParameters ||
1751
+ parameters !== node.parameters ||
1752
+ typeNode !== node.type ||
1753
+ fullSignature !== node.fullSignature ||
1754
+ body !== node.body
1755
+ ) {
1756
+ const updated = new MethodDeclaration(
1757
+ modifiers,
1758
+ asteriskToken,
1759
+ name,
1760
+ postfixToken,
1761
+ typeParameters,
1762
+ parameters,
1763
+ typeNode,
1764
+ fullSignature,
1765
+ body,
1766
+ );
1767
+ this.finishUpdate(updated, node);
1768
+ return updated;
1769
+ }
1770
+ return node;
1771
+ }
1772
+
1773
+ updateMethodSignatureDeclaration(
1774
+ node: MethodSignatureDeclaration,
1775
+ modifiers: ModifierList | undefined,
1776
+ name: PropertyName,
1777
+ postfixToken: Token | undefined,
1778
+ typeParameters: NodeList | undefined,
1779
+ parameters: NodeList,
1780
+ typeNode: TypeNode | undefined,
1781
+ ): MethodSignatureDeclaration {
1782
+ if (
1783
+ modifiers !== node.modifiers ||
1784
+ name !== node.name ||
1785
+ postfixToken !== node.postfixToken ||
1786
+ typeParameters !== node.typeParameters ||
1787
+ parameters !== node.parameters ||
1788
+ typeNode !== node.type
1789
+ ) {
1790
+ const updated = new MethodSignatureDeclaration(
1791
+ modifiers,
1792
+ name,
1793
+ postfixToken,
1794
+ typeParameters,
1795
+ parameters,
1796
+ typeNode,
1797
+ );
1798
+ this.finishUpdate(updated, node);
1799
+ return updated;
1800
+ }
1801
+ return node;
1802
+ }
1803
+
1804
+ updateMissingDeclaration(node: MissingDeclaration, modifiers: ModifierList | undefined): MissingDeclaration {
1805
+ if (modifiers !== node.modifiers) {
1806
+ const updated = new MissingDeclaration(modifiers);
1807
+ this.finishUpdate(updated, node);
1808
+ return updated;
1809
+ }
1810
+ return node;
1811
+ }
1812
+
1813
+ updateModuleBlock(node: ModuleBlock, statements: NodeList): ModuleBlock {
1814
+ if (statements !== node.statements) {
1815
+ const updated = new ModuleBlock(statements);
1816
+ this.finishUpdate(updated, node);
1817
+ return updated;
1818
+ }
1819
+ return node;
1820
+ }
1821
+
1822
+ updateModuleDeclaration(
1823
+ node: ModuleDeclaration,
1824
+ modifiers: ModifierList | undefined,
1825
+ keyword: SyntaxKind,
1826
+ name: ModuleName,
1827
+ body: ModuleBody | undefined,
1828
+ ): ModuleDeclaration {
1829
+ if (modifiers !== node.modifiers || keyword !== node.keyword || name !== node.name || body !== node.body) {
1830
+ const updated = new ModuleDeclaration(modifiers, keyword, name, body);
1831
+ this.finishUpdate(updated, node);
1832
+ return updated;
1833
+ }
1834
+ return node;
1835
+ }
1836
+
1837
+ updateNamedExports(node: NamedExports, elements: NodeList): NamedExports {
1838
+ if (elements !== node.elements) {
1839
+ const updated = new NamedExports(elements);
1840
+ this.finishUpdate(updated, node);
1841
+ return updated;
1842
+ }
1843
+ return node;
1844
+ }
1845
+
1846
+ updateNamedImports(node: NamedImports, elements: NodeList): NamedImports {
1847
+ if (elements !== node.elements) {
1848
+ const updated = new NamedImports(elements);
1849
+ this.finishUpdate(updated, node);
1850
+ return updated;
1851
+ }
1852
+ return node;
1853
+ }
1854
+
1855
+ updateNamedTupleMember(
1856
+ node: NamedTupleMember,
1857
+ dotDotDotToken: Token | undefined,
1858
+ name: Identifier,
1859
+ questionToken: Token | undefined,
1860
+ typeNode: TypeNode,
1861
+ ): NamedTupleMember {
1862
+ if (
1863
+ dotDotDotToken !== node.dotDotDotToken ||
1864
+ name !== node.name ||
1865
+ questionToken !== node.questionToken ||
1866
+ typeNode !== node.type
1867
+ ) {
1868
+ const updated = new NamedTupleMember(dotDotDotToken, name, questionToken, typeNode);
1869
+ this.finishUpdate(updated, node);
1870
+ return updated;
1871
+ }
1872
+ return node;
1873
+ }
1874
+
1875
+ updateNamespaceExport(node: NamespaceExport, name: ModuleExportName): NamespaceExport {
1876
+ if (name !== node.name) {
1877
+ const updated = new NamespaceExport(name);
1878
+ this.finishUpdate(updated, node);
1879
+ return updated;
1880
+ }
1881
+ return node;
1882
+ }
1883
+
1884
+ updateNamespaceExportDeclaration(
1885
+ node: NamespaceExportDeclaration,
1886
+ modifiers: ModifierList | undefined,
1887
+ name: Identifier,
1888
+ ): NamespaceExportDeclaration {
1889
+ if (modifiers !== node.modifiers || name !== node.name) {
1890
+ const updated = new NamespaceExportDeclaration(modifiers, name);
1891
+ this.finishUpdate(updated, node);
1892
+ return updated;
1893
+ }
1894
+ return node;
1895
+ }
1896
+
1897
+ updateNamespaceImport(node: NamespaceImport, name: Identifier): NamespaceImport {
1898
+ if (name !== node.name) {
1899
+ const updated = new NamespaceImport(name);
1900
+ this.finishUpdate(updated, node);
1901
+ return updated;
1902
+ }
1903
+ return node;
1904
+ }
1905
+
1906
+ updateNewExpression(
1907
+ node: NewExpression,
1908
+ expression: Expression,
1909
+ typeArguments: NodeList | undefined,
1910
+ args: NodeList | undefined,
1911
+ ): NewExpression {
1912
+ if (expression !== node.expression || typeArguments !== node.typeArguments || args !== node.arguments) {
1913
+ const updated = new NewExpression(expression, typeArguments, args);
1914
+ this.finishUpdate(updated, node);
1915
+ return updated;
1916
+ }
1917
+ return node;
1918
+ }
1919
+
1920
+ updateNonNullExpression(node: NonNullExpression, expression: Expression, flags: NodeFlags): NonNullExpression {
1921
+ if (expression !== node.expression || flags !== node.flags) {
1922
+ const updated = new NonNullExpression(expression, flags);
1923
+ this.finishUpdate(updated, node);
1924
+ return updated;
1925
+ }
1926
+ return node;
1927
+ }
1928
+
1929
+ updateObjectLiteralExpression(
1930
+ node: ObjectLiteralExpression,
1931
+ properties: NodeList,
1932
+ multiLine: boolean,
1933
+ ): ObjectLiteralExpression {
1934
+ if (properties !== node.properties || multiLine !== node.multiLine) {
1935
+ const updated = new ObjectLiteralExpression(properties, multiLine);
1936
+ this.finishUpdate(updated, node);
1937
+ return updated;
1938
+ }
1939
+ return node;
1940
+ }
1941
+
1942
+ updateOptionalTypeNode(node: OptionalTypeNode, typeNode: TypeNode): OptionalTypeNode {
1943
+ if (typeNode !== node.type) {
1944
+ const updated = new OptionalTypeNode(typeNode);
1945
+ this.finishUpdate(updated, node);
1946
+ return updated;
1947
+ }
1948
+ return node;
1949
+ }
1950
+
1951
+ updateParameterDeclaration(
1952
+ node: ParameterDeclaration,
1953
+ modifiers: ModifierList | undefined,
1954
+ dotDotDotToken: Token | undefined,
1955
+ name: BindingName,
1956
+ questionToken: Token | undefined,
1957
+ typeNode: TypeNode | undefined,
1958
+ initializer: Expression | undefined,
1959
+ ): ParameterDeclaration {
1960
+ if (
1961
+ modifiers !== node.modifiers ||
1962
+ dotDotDotToken !== node.dotDotDotToken ||
1963
+ name !== node.name ||
1964
+ questionToken !== node.questionToken ||
1965
+ typeNode !== node.type ||
1966
+ initializer !== node.initializer
1967
+ ) {
1968
+ const updated = new ParameterDeclaration(modifiers, dotDotDotToken, name, questionToken, typeNode, initializer);
1969
+ this.finishUpdate(updated, node);
1970
+ return updated;
1971
+ }
1972
+ return node;
1973
+ }
1974
+
1975
+ updateParenthesizedExpression(node: ParenthesizedExpression, expression: Expression): ParenthesizedExpression {
1976
+ if (expression !== node.expression) {
1977
+ const updated = new ParenthesizedExpression(expression);
1978
+ this.finishUpdate(updated, node);
1979
+ return updated;
1980
+ }
1981
+ return node;
1982
+ }
1983
+
1984
+ updateParenthesizedTypeNode(node: ParenthesizedTypeNode, typeNode: TypeNode): ParenthesizedTypeNode {
1985
+ if (typeNode !== node.type) {
1986
+ const updated = new ParenthesizedTypeNode(typeNode);
1987
+ this.finishUpdate(updated, node);
1988
+ return updated;
1989
+ }
1990
+ return node;
1991
+ }
1992
+
1993
+ updatePartiallyEmittedExpression(
1994
+ node: PartiallyEmittedExpression,
1995
+ expression: Expression,
1996
+ ): PartiallyEmittedExpression {
1997
+ if (expression !== node.expression) {
1998
+ const updated = new PartiallyEmittedExpression(expression);
1999
+ this.finishUpdate(updated, node);
2000
+ return updated;
2001
+ }
2002
+ return node;
2003
+ }
2004
+
2005
+ updatePostfixUnaryExpression(
2006
+ node: PostfixUnaryExpression,
2007
+ operand: Expression,
2008
+ operator: SyntaxKind,
2009
+ ): PostfixUnaryExpression {
2010
+ if (operand !== node.operand || operator !== node.operator) {
2011
+ const updated = new PostfixUnaryExpression(operand, operator);
2012
+ this.finishUpdate(updated, node);
2013
+ return updated;
2014
+ }
2015
+ return node;
2016
+ }
2017
+
2018
+ updatePrefixUnaryExpression(
2019
+ node: PrefixUnaryExpression,
2020
+ operator: SyntaxKind,
2021
+ operand: Expression,
2022
+ ): PrefixUnaryExpression {
2023
+ if (operator !== node.operator || operand !== node.operand) {
2024
+ const updated = new PrefixUnaryExpression(operator, operand);
2025
+ this.finishUpdate(updated, node);
2026
+ return updated;
2027
+ }
2028
+ return node;
2029
+ }
2030
+
2031
+ updatePropertyAccessExpression(
2032
+ node: PropertyAccessExpression,
2033
+ expression: Expression,
2034
+ questionDotToken: Token | undefined,
2035
+ name: MemberName,
2036
+ flags: NodeFlags,
2037
+ ): PropertyAccessExpression {
2038
+ if (
2039
+ expression !== node.expression ||
2040
+ questionDotToken !== node.questionDotToken ||
2041
+ name !== node.name ||
2042
+ flags !== node.flags
2043
+ ) {
2044
+ const updated = new PropertyAccessExpression(expression, questionDotToken, name, flags);
2045
+ this.finishUpdate(updated, node);
2046
+ return updated;
2047
+ }
2048
+ return node;
2049
+ }
2050
+
2051
+ updatePropertyAssignment(
2052
+ node: PropertyAssignment,
2053
+ modifiers: ModifierList | undefined,
2054
+ name: PropertyName,
2055
+ postfixToken: Token | undefined,
2056
+ typeNode: TypeNode | undefined,
2057
+ initializer: Expression,
2058
+ ): PropertyAssignment {
2059
+ if (
2060
+ modifiers !== node.modifiers ||
2061
+ name !== node.name ||
2062
+ postfixToken !== node.postfixToken ||
2063
+ typeNode !== node.type ||
2064
+ initializer !== node.initializer
2065
+ ) {
2066
+ const updated = new PropertyAssignment(modifiers, name, postfixToken, typeNode, initializer);
2067
+ this.finishUpdate(updated, node);
2068
+ return updated;
2069
+ }
2070
+ return node;
2071
+ }
2072
+
2073
+ updatePropertyDeclaration(
2074
+ node: PropertyDeclaration,
2075
+ modifiers: ModifierList | undefined,
2076
+ name: PropertyName,
2077
+ postfixToken: Token | undefined,
2078
+ typeNode: TypeNode | undefined,
2079
+ initializer: Expression | undefined,
2080
+ ): PropertyDeclaration {
2081
+ if (
2082
+ modifiers !== node.modifiers ||
2083
+ name !== node.name ||
2084
+ postfixToken !== node.postfixToken ||
2085
+ typeNode !== node.type ||
2086
+ initializer !== node.initializer
2087
+ ) {
2088
+ const updated = new PropertyDeclaration(modifiers, name, postfixToken, typeNode, initializer);
2089
+ this.finishUpdate(updated, node);
2090
+ return updated;
2091
+ }
2092
+ return node;
2093
+ }
2094
+
2095
+ updatePropertySignatureDeclaration(
2096
+ node: PropertySignatureDeclaration,
2097
+ modifiers: ModifierList | undefined,
2098
+ name: PropertyName,
2099
+ postfixToken: Token | undefined,
2100
+ typeNode: TypeNode | undefined,
2101
+ initializer: Expression | undefined,
2102
+ ): PropertySignatureDeclaration {
2103
+ if (
2104
+ modifiers !== node.modifiers ||
2105
+ name !== node.name ||
2106
+ postfixToken !== node.postfixToken ||
2107
+ typeNode !== node.type ||
2108
+ initializer !== node.initializer
2109
+ ) {
2110
+ const updated = new PropertySignatureDeclaration(modifiers, name, postfixToken, typeNode, initializer);
2111
+ this.finishUpdate(updated, node);
2112
+ return updated;
2113
+ }
2114
+ return node;
2115
+ }
2116
+
2117
+ updateQualifiedName(node: QualifiedName, left: EntityName, right: Identifier): QualifiedName {
2118
+ if (left !== node.left || right !== node.right) {
2119
+ const updated = new QualifiedName(left, right);
2120
+ this.finishUpdate(updated, node);
2121
+ return updated;
2122
+ }
2123
+ return node;
2124
+ }
2125
+
2126
+ updateRestTypeNode(node: RestTypeNode, typeNode: TypeNode): RestTypeNode {
2127
+ if (typeNode !== node.type) {
2128
+ const updated = new RestTypeNode(typeNode);
2129
+ this.finishUpdate(updated, node);
2130
+ return updated;
2131
+ }
2132
+ return node;
2133
+ }
2134
+
2135
+ updateReturnStatement(node: ReturnStatement, expression: Expression | undefined): ReturnStatement {
2136
+ if (expression !== node.expression) {
2137
+ const updated = new ReturnStatement(expression);
2138
+ this.finishUpdate(updated, node);
2139
+ return updated;
2140
+ }
2141
+ return node;
2142
+ }
2143
+
2144
+ updateSatisfiesExpression(
2145
+ node: SatisfiesExpression,
2146
+ expression: Expression,
2147
+ typeNode: TypeNode,
2148
+ ): SatisfiesExpression {
2149
+ if (expression !== node.expression || typeNode !== node.type) {
2150
+ const updated = new SatisfiesExpression(expression, typeNode);
2151
+ this.finishUpdate(updated, node);
2152
+ return updated;
2153
+ }
2154
+ return node;
2155
+ }
2156
+
2157
+ updateSetAccessorDeclaration(
2158
+ node: SetAccessorDeclaration,
2159
+ modifiers: ModifierList | undefined,
2160
+ name: PropertyName,
2161
+ typeParameters: NodeList | undefined,
2162
+ parameters: NodeList,
2163
+ typeNode: TypeNode | undefined,
2164
+ fullSignature: TypeNode | undefined,
2165
+ body: FunctionBody | undefined,
2166
+ ): SetAccessorDeclaration {
2167
+ if (
2168
+ modifiers !== node.modifiers ||
2169
+ name !== node.name ||
2170
+ typeParameters !== node.typeParameters ||
2171
+ parameters !== node.parameters ||
2172
+ typeNode !== node.type ||
2173
+ fullSignature !== node.fullSignature ||
2174
+ body !== node.body
2175
+ ) {
2176
+ const updated = new SetAccessorDeclaration(
2177
+ modifiers,
2178
+ name,
2179
+ typeParameters,
2180
+ parameters,
2181
+ typeNode,
2182
+ fullSignature,
2183
+ body,
2184
+ );
2185
+ this.finishUpdate(updated, node);
2186
+ return updated;
2187
+ }
2188
+ return node;
2189
+ }
2190
+
2191
+ updateShorthandPropertyAssignment(
2192
+ node: ShorthandPropertyAssignment,
2193
+ modifiers: ModifierList | undefined,
2194
+ name: PropertyName,
2195
+ postfixToken: Token | undefined,
2196
+ typeNode: TypeNode | undefined,
2197
+ equalsToken: Token | undefined,
2198
+ objectAssignmentInitializer: Expression | undefined,
2199
+ ): ShorthandPropertyAssignment {
2200
+ if (
2201
+ modifiers !== node.modifiers ||
2202
+ name !== node.name ||
2203
+ postfixToken !== node.postfixToken ||
2204
+ typeNode !== node.type ||
2205
+ equalsToken !== node.equalsToken ||
2206
+ objectAssignmentInitializer !== node.objectAssignmentInitializer
2207
+ ) {
2208
+ const updated = new ShorthandPropertyAssignment(
2209
+ modifiers,
2210
+ name,
2211
+ postfixToken,
2212
+ typeNode,
2213
+ equalsToken,
2214
+ objectAssignmentInitializer,
2215
+ );
2216
+ this.finishUpdate(updated, node);
2217
+ return updated;
2218
+ }
2219
+ return node;
2220
+ }
2221
+
2222
+ updateSpreadAssignment(node: SpreadAssignment, expression: Expression): SpreadAssignment {
2223
+ if (expression !== node.expression) {
2224
+ const updated = new SpreadAssignment(expression);
2225
+ this.finishUpdate(updated, node);
2226
+ return updated;
2227
+ }
2228
+ return node;
2229
+ }
2230
+
2231
+ updateSpreadElement(node: SpreadElement, expression: Expression): SpreadElement {
2232
+ if (expression !== node.expression) {
2233
+ const updated = new SpreadElement(expression);
2234
+ this.finishUpdate(updated, node);
2235
+ return updated;
2236
+ }
2237
+ return node;
2238
+ }
2239
+
2240
+ updateSwitchStatement(node: SwitchStatement, expression: Expression, caseBlock: CaseBlock): SwitchStatement {
2241
+ if (expression !== node.expression || caseBlock !== node.caseBlock) {
2242
+ const updated = new SwitchStatement(expression, caseBlock);
2243
+ this.finishUpdate(updated, node);
2244
+ return updated;
2245
+ }
2246
+ return node;
2247
+ }
2248
+
2249
+ updateSyntaxList(node: SyntaxList, children: Node[]): SyntaxList {
2250
+ if (children !== node.children) {
2251
+ const updated = new SyntaxList(children);
2252
+ this.finishUpdate(updated, node);
2253
+ return updated;
2254
+ }
2255
+ return node;
2256
+ }
2257
+
2258
+ updateSyntheticReferenceExpression(
2259
+ node: SyntheticReferenceExpression,
2260
+ expression: Expression,
2261
+ thisArg: Expression,
2262
+ ): SyntheticReferenceExpression {
2263
+ if (expression !== node.expression || thisArg !== node.thisArg) {
2264
+ const updated = new SyntheticReferenceExpression(expression, thisArg);
2265
+ this.finishUpdate(updated, node);
2266
+ return updated;
2267
+ }
2268
+ return node;
2269
+ }
2270
+
2271
+ updateTaggedTemplateExpression(
2272
+ node: TaggedTemplateExpression,
2273
+ tag: Expression,
2274
+ questionDotToken: Token | undefined,
2275
+ typeArguments: NodeList | undefined,
2276
+ template: TemplateLiteral,
2277
+ flags: NodeFlags,
2278
+ ): TaggedTemplateExpression {
2279
+ if (
2280
+ tag !== node.tag ||
2281
+ questionDotToken !== node.questionDotToken ||
2282
+ typeArguments !== node.typeArguments ||
2283
+ template !== node.template ||
2284
+ flags !== node.flags
2285
+ ) {
2286
+ const updated = new TaggedTemplateExpression(tag, questionDotToken, typeArguments, template, flags);
2287
+ this.finishUpdate(updated, node);
2288
+ return updated;
2289
+ }
2290
+ return node;
2291
+ }
2292
+
2293
+ updateTemplateExpression(node: TemplateExpression, head: TemplateHead, templateSpans: NodeList): TemplateExpression {
2294
+ if (head !== node.head || templateSpans !== node.templateSpans) {
2295
+ const updated = new TemplateExpression(head, templateSpans);
2296
+ this.finishUpdate(updated, node);
2297
+ return updated;
2298
+ }
2299
+ return node;
2300
+ }
2301
+
2302
+ updateTemplateLiteralTypeNode(
2303
+ node: TemplateLiteralTypeNode,
2304
+ head: TemplateHead,
2305
+ templateSpans: NodeList,
2306
+ ): TemplateLiteralTypeNode {
2307
+ if (head !== node.head || templateSpans !== node.templateSpans) {
2308
+ const updated = new TemplateLiteralTypeNode(head, templateSpans);
2309
+ this.finishUpdate(updated, node);
2310
+ return updated;
2311
+ }
2312
+ return node;
2313
+ }
2314
+
2315
+ updateTemplateLiteralTypeSpan(
2316
+ node: TemplateLiteralTypeSpan,
2317
+ typeNode: TypeNode,
2318
+ literal: TemplateMiddleOrTail,
2319
+ ): TemplateLiteralTypeSpan {
2320
+ if (typeNode !== node.type || literal !== node.literal) {
2321
+ const updated = new TemplateLiteralTypeSpan(typeNode, literal);
2322
+ this.finishUpdate(updated, node);
2323
+ return updated;
2324
+ }
2325
+ return node;
2326
+ }
2327
+
2328
+ updateTemplateSpan(node: TemplateSpan, expression: Expression, literal: TemplateMiddleOrTail): TemplateSpan {
2329
+ if (expression !== node.expression || literal !== node.literal) {
2330
+ const updated = new TemplateSpan(expression, literal);
2331
+ this.finishUpdate(updated, node);
2332
+ return updated;
2333
+ }
2334
+ return node;
2335
+ }
2336
+
2337
+ updateThrowStatement(node: ThrowStatement, expression: Expression): ThrowStatement {
2338
+ if (expression !== node.expression) {
2339
+ const updated = new ThrowStatement(expression);
2340
+ this.finishUpdate(updated, node);
2341
+ return updated;
2342
+ }
2343
+ return node;
2344
+ }
2345
+
2346
+ updateTryStatement(
2347
+ node: TryStatement,
2348
+ tryBlock: Block,
2349
+ catchClause: CatchClause | undefined,
2350
+ finallyBlock: Block | undefined,
2351
+ ): TryStatement {
2352
+ if (tryBlock !== node.tryBlock || catchClause !== node.catchClause || finallyBlock !== node.finallyBlock) {
2353
+ const updated = new TryStatement(tryBlock, catchClause, finallyBlock);
2354
+ this.finishUpdate(updated, node);
2355
+ return updated;
2356
+ }
2357
+ return node;
2358
+ }
2359
+
2360
+ updateTupleTypeNode(node: TupleTypeNode, elements: NodeList): TupleTypeNode {
2361
+ if (elements !== node.elements) {
2362
+ const updated = new TupleTypeNode(elements);
2363
+ this.finishUpdate(updated, node);
2364
+ return updated;
2365
+ }
2366
+ return node;
2367
+ }
2368
+
2369
+ updateTypeAliasDeclaration(
2370
+ node: TypeAliasDeclaration,
2371
+ modifiers: ModifierList | undefined,
2372
+ name: Identifier,
2373
+ typeParameters: NodeList | undefined,
2374
+ typeNode: TypeNode,
2375
+ ): TypeAliasDeclaration {
2376
+ if (
2377
+ modifiers !== node.modifiers ||
2378
+ name !== node.name ||
2379
+ typeParameters !== node.typeParameters ||
2380
+ typeNode !== node.type
2381
+ ) {
2382
+ const updated = new TypeAliasDeclaration(node.kind, modifiers, name, typeParameters, typeNode);
2383
+ this.finishUpdate(updated, node);
2384
+ return updated;
2385
+ }
2386
+ return node;
2387
+ }
2388
+
2389
+ updateTypeAssertion(node: TypeAssertion, typeNode: TypeNode, expression: Expression): TypeAssertion {
2390
+ if (typeNode !== node.type || expression !== node.expression) {
2391
+ const updated = new TypeAssertion(typeNode, expression);
2392
+ this.finishUpdate(updated, node);
2393
+ return updated;
2394
+ }
2395
+ return node;
2396
+ }
2397
+
2398
+ updateTypeLiteralNode(node: TypeLiteralNode, members: NodeList): TypeLiteralNode {
2399
+ if (members !== node.members) {
2400
+ const updated = new TypeLiteralNode(members);
2401
+ this.finishUpdate(updated, node);
2402
+ return updated;
2403
+ }
2404
+ return node;
2405
+ }
2406
+
2407
+ updateTypeOfExpression(node: TypeOfExpression, expression: Expression): TypeOfExpression {
2408
+ if (expression !== node.expression) {
2409
+ const updated = new TypeOfExpression(expression);
2410
+ this.finishUpdate(updated, node);
2411
+ return updated;
2412
+ }
2413
+ return node;
2414
+ }
2415
+
2416
+ updateTypeOperatorNode(node: TypeOperatorNode, operator: SyntaxKind, typeNode: TypeNode): TypeOperatorNode {
2417
+ if (operator !== node.operator || typeNode !== node.type) {
2418
+ const updated = new TypeOperatorNode(operator, typeNode);
2419
+ this.finishUpdate(updated, node);
2420
+ return updated;
2421
+ }
2422
+ return node;
2423
+ }
2424
+
2425
+ updateTypeParameterDeclaration(
2426
+ node: TypeParameterDeclaration,
2427
+ modifiers: ModifierList | undefined,
2428
+ name: Identifier,
2429
+ constraint: TypeNode | undefined,
2430
+ expression: Expression | undefined,
2431
+ defaultType: TypeNode | undefined,
2432
+ ): TypeParameterDeclaration {
2433
+ if (
2434
+ modifiers !== node.modifiers ||
2435
+ name !== node.name ||
2436
+ constraint !== node.constraint ||
2437
+ expression !== node.expression ||
2438
+ defaultType !== node.defaultType
2439
+ ) {
2440
+ const updated = new TypeParameterDeclaration(modifiers, name, constraint, expression, defaultType);
2441
+ this.finishUpdate(updated, node);
2442
+ return updated;
2443
+ }
2444
+ return node;
2445
+ }
2446
+
2447
+ updateTypePredicateNode(
2448
+ node: TypePredicateNode,
2449
+ assertsModifier: Token | undefined,
2450
+ parameterName: TypePredicateParameterName,
2451
+ typeNode: TypeNode | undefined,
2452
+ ): TypePredicateNode {
2453
+ if (assertsModifier !== node.assertsModifier || parameterName !== node.parameterName || typeNode !== node.type) {
2454
+ const updated = new TypePredicateNode(assertsModifier, parameterName, typeNode);
2455
+ this.finishUpdate(updated, node);
2456
+ return updated;
2457
+ }
2458
+ return node;
2459
+ }
2460
+
2461
+ updateTypeQueryNode(node: TypeQueryNode, exprName: EntityName, typeArguments: NodeList | undefined): TypeQueryNode {
2462
+ if (exprName !== node.exprName || typeArguments !== node.typeArguments) {
2463
+ const updated = new TypeQueryNode(exprName, typeArguments);
2464
+ this.finishUpdate(updated, node);
2465
+ return updated;
2466
+ }
2467
+ return node;
2468
+ }
2469
+
2470
+ updateTypeReferenceNode(
2471
+ node: TypeReferenceNode,
2472
+ typeName: EntityName,
2473
+ typeArguments: NodeList | undefined,
2474
+ ): TypeReferenceNode {
2475
+ if (typeName !== node.typeName || typeArguments !== node.typeArguments) {
2476
+ const updated = new TypeReferenceNode(typeName, typeArguments);
2477
+ this.finishUpdate(updated, node);
2478
+ return updated;
2479
+ }
2480
+ return node;
2481
+ }
2482
+
2483
+ updateUnionTypeNode(node: UnionTypeNode, types: NodeList): UnionTypeNode {
2484
+ if (types !== node.types) {
2485
+ const updated = new UnionTypeNode(types);
2486
+ this.finishUpdate(updated, node);
2487
+ return updated;
2488
+ }
2489
+ return node;
2490
+ }
2491
+
2492
+ updateVariableDeclaration(
2493
+ node: VariableDeclaration,
2494
+ name: BindingName,
2495
+ exclamationToken: Token | undefined,
2496
+ typeNode: TypeNode | undefined,
2497
+ initializer: Expression | undefined,
2498
+ ): VariableDeclaration {
2499
+ if (
2500
+ name !== node.name ||
2501
+ exclamationToken !== node.exclamationToken ||
2502
+ typeNode !== node.type ||
2503
+ initializer !== node.initializer
2504
+ ) {
2505
+ const updated = new VariableDeclaration(name, exclamationToken, typeNode, initializer);
2506
+ this.finishUpdate(updated, node);
2507
+ return updated;
2508
+ }
2509
+ return node;
2510
+ }
2511
+
2512
+ updateVariableDeclarationList(
2513
+ node: VariableDeclarationList,
2514
+ declarations: NodeList,
2515
+ flags: NodeFlags,
2516
+ ): VariableDeclarationList {
2517
+ if (declarations !== node.declarations || flags !== node.flags) {
2518
+ const updated = new VariableDeclarationList(declarations, flags);
2519
+ this.finishUpdate(updated, node);
2520
+ return updated;
2521
+ }
2522
+ return node;
2523
+ }
2524
+
2525
+ updateVariableStatement(
2526
+ node: VariableStatement,
2527
+ modifiers: ModifierList | undefined,
2528
+ declarationList: VariableDeclarationList,
2529
+ ): VariableStatement {
2530
+ if (modifiers !== node.modifiers || declarationList !== node.declarationList) {
2531
+ const updated = new VariableStatement(modifiers, declarationList);
2532
+ this.finishUpdate(updated, node);
2533
+ return updated;
2534
+ }
2535
+ return node;
2536
+ }
2537
+
2538
+ updateVoidExpression(node: VoidExpression, expression: Expression): VoidExpression {
2539
+ if (expression !== node.expression) {
2540
+ const updated = new VoidExpression(expression);
2541
+ this.finishUpdate(updated, node);
2542
+ return updated;
2543
+ }
2544
+ return node;
2545
+ }
2546
+
2547
+ updateWhileStatement(node: WhileStatement, expression: Expression, statement: Statement): WhileStatement {
2548
+ if (expression !== node.expression || statement !== node.statement) {
2549
+ const updated = new WhileStatement(expression, statement);
2550
+ this.finishUpdate(updated, node);
2551
+ return updated;
2552
+ }
2553
+ return node;
2554
+ }
2555
+
2556
+ updateWithStatement(node: WithStatement, expression: Expression, statement: Statement): WithStatement {
2557
+ if (expression !== node.expression || statement !== node.statement) {
2558
+ const updated = new WithStatement(expression, statement);
2559
+ this.finishUpdate(updated, node);
2560
+ return updated;
2561
+ }
2562
+ return node;
2563
+ }
2564
+
2565
+ updateYieldExpression(
2566
+ node: YieldExpression,
2567
+ asteriskToken: Token | undefined,
2568
+ expression: Expression | undefined,
2569
+ ): YieldExpression {
2570
+ if (asteriskToken !== node.asteriskToken || expression !== node.expression) {
2571
+ const updated = new YieldExpression(asteriskToken, expression);
2572
+ this.finishUpdate(updated, node);
2573
+ return updated;
2574
+ }
2575
+ return node;
2576
+ }
2577
+ }