@openrewrite/rewrite 8.96.5 → 8.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/java/tree.d.ts +2 -1
  2. package/dist/java/tree.d.ts.map +1 -1
  3. package/dist/java/tree.js.map +1 -1
  4. package/dist/java/visitor.d.ts +5 -0
  5. package/dist/java/visitor.d.ts.map +1 -1
  6. package/dist/java/visitor.js +264 -231
  7. package/dist/java/visitor.js.map +1 -1
  8. package/dist/javascript/dependency-workspace.d.ts +8 -2
  9. package/dist/javascript/dependency-workspace.d.ts.map +1 -1
  10. package/dist/javascript/dependency-workspace.js +36 -4
  11. package/dist/javascript/dependency-workspace.js.map +1 -1
  12. package/dist/javascript/templating/engine.d.ts +1 -0
  13. package/dist/javascript/templating/engine.d.ts.map +1 -1
  14. package/dist/javascript/templating/engine.js +28 -4
  15. package/dist/javascript/templating/engine.js.map +1 -1
  16. package/dist/javascript/templating/placeholder-replacement.d.ts +2 -0
  17. package/dist/javascript/templating/placeholder-replacement.d.ts.map +1 -1
  18. package/dist/javascript/templating/placeholder-replacement.js +24 -3
  19. package/dist/javascript/templating/placeholder-replacement.js.map +1 -1
  20. package/dist/javascript/visitor.d.ts.map +1 -1
  21. package/dist/javascript/visitor.js +135 -121
  22. package/dist/javascript/visitor.js.map +1 -1
  23. package/dist/rewrite-javascript-version.txt +1 -1
  24. package/package.json +1 -1
  25. package/src/java/tree.ts +2 -1
  26. package/src/java/visitor.ts +263 -230
  27. package/src/javascript/dependency-workspace.ts +35 -3
  28. package/src/javascript/templating/engine.ts +30 -3
  29. package/src/javascript/templating/placeholder-replacement.ts +24 -3
  30. package/src/javascript/visitor.ts +139 -121
@@ -61,12 +61,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
61
61
  return expression;
62
62
  }
63
63
  alias = expression;
64
- const updates = {
64
+ const updates = await this.visitChildrenOf(alias, async () => ({
65
65
  prefix: await this.visitSpace(alias.prefix, p),
66
66
  markers: await this.visitMarkers(alias.markers, p),
67
67
  propertyName: await this.visitRightPadded(alias.propertyName, p),
68
68
  alias: await this.visitDefined(alias.alias, p)
69
- };
69
+ }));
70
70
  return (0, util_1.updateIfChanged)(alias, updates);
71
71
  }
72
72
  async visitArrowFunction(arrowFunction, p) {
@@ -80,7 +80,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
80
80
  return statement;
81
81
  }
82
82
  arrowFunction = statement;
83
- const updates = {
83
+ const updates = await this.visitChildrenOf(arrowFunction, async () => ({
84
84
  prefix: await this.visitSpace(arrowFunction.prefix, p),
85
85
  markers: await this.visitMarkers(arrowFunction.markers, p),
86
86
  leadingAnnotations: await (0, util_1.mapAsync)(arrowFunction.leadingAnnotations, item => this.visitDefined(item, p)),
@@ -88,7 +88,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
88
88
  typeParameters: arrowFunction.typeParameters && await this.visitDefined(arrowFunction.typeParameters, p),
89
89
  lambda: await this.visitDefined(arrowFunction.lambda, p),
90
90
  returnTypeExpression: arrowFunction.returnTypeExpression && await this.visitDefined(arrowFunction.returnTypeExpression, p)
91
- };
91
+ }));
92
92
  return (0, util_1.updateIfChanged)(arrowFunction, updates);
93
93
  }
94
94
  async visitAs(as_, p) {
@@ -97,13 +97,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
97
97
  return expression;
98
98
  }
99
99
  as_ = expression;
100
- const updates = {
100
+ const updates = await this.visitChildrenOf(as_, async () => ({
101
101
  prefix: await this.visitSpace(as_.prefix, p),
102
102
  markers: await this.visitMarkers(as_.markers, p),
103
103
  left: await this.visitRightPadded(as_.left, p),
104
104
  right: await this.visitDefined(as_.right, p),
105
105
  type: as_.type && await this.visitType(as_.type, p)
106
- };
106
+ }));
107
107
  return (0, util_1.updateIfChanged)(as_, updates);
108
108
  }
109
109
  async visitAwait(await_, p) {
@@ -112,12 +112,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
112
112
  return expression;
113
113
  }
114
114
  await_ = expression;
115
- const updates = {
115
+ const updates = await this.visitChildrenOf(await_, async () => ({
116
116
  prefix: await this.visitSpace(await_.prefix, p),
117
117
  markers: await this.visitMarkers(await_.markers, p),
118
118
  expression: await this.visitDefined(await_.expression, p),
119
119
  type: await_.type && await this.visitType(await_.type, p)
120
- };
120
+ }));
121
121
  return (0, util_1.updateIfChanged)(await_, updates);
122
122
  }
123
123
  async visitJsxTag(element, p) {
@@ -126,7 +126,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
126
126
  return expression;
127
127
  }
128
128
  element = expression;
129
- const updates = {
129
+ const updates = await this.visitChildrenOf(element, async () => ({
130
130
  prefix: await this.visitSpace(element.prefix, p),
131
131
  markers: await this.visitMarkers(element.markers, p),
132
132
  openName: await this.visitLeftPadded(element.openName, p),
@@ -137,7 +137,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
137
137
  children: element.children && await (0, util_1.mapAsync)(element.children, child => this.visit(child, p)),
138
138
  closingName: element.closingName && await this.visitLeftPadded(element.closingName, p),
139
139
  afterClosingName: element.afterClosingName && await this.visitSpace(element.afterClosingName, p)
140
- };
140
+ }));
141
141
  return (0, util_1.updateIfChanged)(element, updates);
142
142
  }
143
143
  async visitJsxAttribute(attribute, p) {
@@ -164,11 +164,11 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
164
164
  return expression;
165
165
  }
166
166
  expr = expression;
167
- const updates = {
167
+ const updates = await this.visitChildrenOf(expr, async () => ({
168
168
  prefix: await this.visitSpace(expr.prefix, p),
169
169
  markers: await this.visitMarkers(expr.markers, p),
170
170
  expression: await this.visitRightPadded(expr.expression, p)
171
- };
171
+ }));
172
172
  return (0, util_1.updateIfChanged)(expr, updates);
173
173
  }
174
174
  async visitJsxNamespacedName(ns, p) {
@@ -195,13 +195,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
195
195
  return expression;
196
196
  }
197
197
  conditionalType = expression;
198
- const updates = {
198
+ const updates = await this.visitChildrenOf(conditionalType, async () => ({
199
199
  prefix: await this.visitSpace(conditionalType.prefix, p),
200
200
  markers: await this.visitMarkers(conditionalType.markers, p),
201
201
  checkType: await this.visitDefined(conditionalType.checkType, p),
202
202
  condition: await this.visitLeftPadded(conditionalType.condition, p),
203
203
  type: conditionalType.type && await this.visitType(conditionalType.type, p)
204
- };
204
+ }));
205
205
  return (0, util_1.updateIfChanged)(conditionalType, updates);
206
206
  }
207
207
  async visitDelete(delete_, p) {
@@ -215,11 +215,11 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
215
215
  return statement;
216
216
  }
217
217
  delete_ = statement;
218
- const updates = {
218
+ const updates = await this.visitChildrenOf(delete_, async () => ({
219
219
  prefix: await this.visitSpace(delete_.prefix, p),
220
220
  markers: await this.visitMarkers(delete_.markers, p),
221
221
  expression: await this.visitDefined(delete_.expression, p)
222
- };
222
+ }));
223
223
  return (0, util_1.updateIfChanged)(delete_, updates);
224
224
  }
225
225
  async visitExpressionStatement(expressionStatement, p) {
@@ -234,15 +234,22 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
234
234
  return statement;
235
235
  }
236
236
  expressionStatement = statement;
237
- const updates = {
237
+ const updates = await this.visitChildrenOf(expressionStatement, async () => ({
238
238
  prefix: await this.visitSpace(expressionStatement.prefix, p),
239
239
  markers: await this.visitMarkers(expressionStatement.markers, p),
240
240
  expression: await this.visitDefined(expressionStatement.expression, p)
241
- };
242
- // Outside a `for` head the parser makes a statement the statement itself, so a visit that makes one does too
243
- const visited = updates.expression;
241
+ }));
242
+ // Outside a `for` head the parser makes a statement the statement itself, so a visit that makes one does too,
243
+ // where the cursor shows what holds the expression statement
244
+ let visited = updates.expression;
245
+ const parent = (_a = this.cursor.parentTree()) === null || _a === void 0 ? void 0 : _a.value;
244
246
  if (visited && visited !== expressionStatement.expression && (0, parser_utils_1.isStatement)(visited) &&
245
- ((_a = this.cursor.parentTree()) === null || _a === void 0 ? void 0 : _a.value.kind) !== java_1.J.Kind.ForLoopControl) {
247
+ parent && parent.kind !== java_1.J.Kind.ForLoopControl) {
248
+ // and it holds a statement that is no expression in a JS.StatementExpression only when it is a `yield`
249
+ const held = visited.kind === tree_1.JS.Kind.StatementExpression ? visited.statement : undefined;
250
+ if (held && held.kind !== java_1.J.Kind.Yield) {
251
+ visited = Object.assign(Object.assign({}, held), { prefix: concatenated(visited.prefix, held.prefix), markers: withOuterMarkers(visited.markers, held.markers) });
252
+ }
246
253
  return Object.assign(Object.assign({}, visited), { prefix: concatenated(updates.prefix, visited.prefix), markers: withOuterMarkers(updates.markers, visited.markers) });
247
254
  }
248
255
  return (0, util_1.updateIfChanged)(expressionStatement, updates);
@@ -253,13 +260,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
253
260
  return expression;
254
261
  }
255
262
  expressionWithTypeArguments = expression;
256
- const updates = {
263
+ const updates = await this.visitChildrenOf(expressionWithTypeArguments, async () => ({
257
264
  prefix: await this.visitSpace(expressionWithTypeArguments.prefix, p),
258
265
  markers: await this.visitMarkers(expressionWithTypeArguments.markers, p),
259
266
  clazz: await this.visitDefined(expressionWithTypeArguments.clazz, p),
260
267
  typeArguments: expressionWithTypeArguments.typeArguments && await this.visitContainer(expressionWithTypeArguments.typeArguments, p),
261
268
  type: expressionWithTypeArguments.type && await this.visitType(expressionWithTypeArguments.type, p)
262
- };
269
+ }));
263
270
  return (0, util_1.updateIfChanged)(expressionWithTypeArguments, updates);
264
271
  }
265
272
  async visitFunctionCall(functionCall, p) {
@@ -273,14 +280,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
273
280
  return statement;
274
281
  }
275
282
  functionCall = statement;
276
- const updates = {
283
+ const updates = await this.visitChildrenOf(functionCall, async () => ({
277
284
  prefix: await this.visitSpace(functionCall.prefix, p),
278
285
  markers: await this.visitMarkers(functionCall.markers, p),
279
286
  function: await this.visitOptionalRightPadded(functionCall.function, p),
280
287
  typeParameters: await this.visitOptionalContainer(functionCall.typeParameters, p),
281
288
  arguments: await this.visitContainer(functionCall.arguments, p),
282
289
  methodType: await this.visitType(functionCall.methodType, p)
283
- };
290
+ }));
284
291
  return (0, util_1.updateIfChanged)(functionCall, updates);
285
292
  }
286
293
  async visitFunctionType(functionType, p) {
@@ -289,7 +296,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
289
296
  return expression;
290
297
  }
291
298
  functionType = expression;
292
- const updates = {
299
+ const updates = await this.visitChildrenOf(functionType, async () => ({
293
300
  prefix: await this.visitSpace(functionType.prefix, p),
294
301
  markers: await this.visitMarkers(functionType.markers, p),
295
302
  modifiers: await (0, util_1.mapAsync)(functionType.modifiers, item => this.visitDefined(item, p)),
@@ -297,7 +304,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
297
304
  typeParameters: functionType.typeParameters && await this.visitDefined(functionType.typeParameters, p),
298
305
  parameters: await this.visitContainer(functionType.parameters, p),
299
306
  returnType: await this.visitLeftPadded(functionType.returnType, p)
300
- };
307
+ }));
301
308
  return (0, util_1.updateIfChanged)(functionType, updates);
302
309
  }
303
310
  async visitInferType(inferType, p) {
@@ -306,12 +313,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
306
313
  return expression;
307
314
  }
308
315
  inferType = expression;
309
- const updates = {
316
+ const updates = await this.visitChildrenOf(inferType, async () => ({
310
317
  prefix: await this.visitSpace(inferType.prefix, p),
311
318
  markers: await this.visitMarkers(inferType.markers, p),
312
319
  typeParameter: await this.visitLeftPadded(inferType.typeParameter, p),
313
320
  type: inferType.type && await this.visitType(inferType.type, p)
314
- };
321
+ }));
315
322
  return (0, util_1.updateIfChanged)(inferType, updates);
316
323
  }
317
324
  async visitImportType(importType, p) {
@@ -320,7 +327,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
320
327
  return expression;
321
328
  }
322
329
  importType = expression;
323
- const updates = {
330
+ const updates = await this.visitChildrenOf(importType, async () => ({
324
331
  prefix: await this.visitSpace(importType.prefix, p),
325
332
  markers: await this.visitMarkers(importType.markers, p),
326
333
  hasTypeof: await this.visitRightPadded(importType.hasTypeof, p),
@@ -328,7 +335,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
328
335
  qualifier: importType.qualifier && await this.visitLeftPadded(importType.qualifier, p),
329
336
  typeArguments: importType.typeArguments && await this.visitContainer(importType.typeArguments, p),
330
337
  type: importType.type && await this.visitType(importType.type, p)
331
- };
338
+ }));
332
339
  return (0, util_1.updateIfChanged)(importType, updates);
333
340
  }
334
341
  async visitImportDeclaration(jsImport, p) {
@@ -337,7 +344,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
337
344
  return statement;
338
345
  }
339
346
  jsImport = statement;
340
- const updates = {
347
+ const updates = await this.visitChildrenOf(jsImport, async () => ({
341
348
  prefix: await this.visitSpace(jsImport.prefix, p),
342
349
  markers: await this.visitMarkers(jsImport.markers, p),
343
350
  modifiers: await (0, util_1.mapAsync)(jsImport.modifiers, item => this.visitDefined(item, p)),
@@ -345,7 +352,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
345
352
  moduleSpecifier: jsImport.moduleSpecifier && await this.visitLeftPadded(jsImport.moduleSpecifier, p),
346
353
  attributes: jsImport.attributes && await this.visitDefined(jsImport.attributes, p),
347
354
  initializer: jsImport.initializer && await this.visitLeftPadded(jsImport.initializer, p)
348
- };
355
+ }));
349
356
  return (0, util_1.updateIfChanged)(jsImport, updates);
350
357
  }
351
358
  async visitImportClause(importClause, p) {
@@ -363,12 +370,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
363
370
  return expression;
364
371
  }
365
372
  namedImports = expression;
366
- const updates = {
373
+ const updates = await this.visitChildrenOf(namedImports, async () => ({
367
374
  prefix: await this.visitSpace(namedImports.prefix, p),
368
375
  markers: await this.visitMarkers(namedImports.markers, p),
369
376
  elements: await this.visitContainer(namedImports.elements, p),
370
377
  type: namedImports.type && await this.visitType(namedImports.type, p)
371
- };
378
+ }));
372
379
  return (0, util_1.updateIfChanged)(namedImports, updates);
373
380
  }
374
381
  async visitImportSpecifier(importSpecifier, p) {
@@ -377,13 +384,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
377
384
  return expression;
378
385
  }
379
386
  importSpecifier = expression;
380
- const updates = {
387
+ const updates = await this.visitChildrenOf(importSpecifier, async () => ({
381
388
  prefix: await this.visitSpace(importSpecifier.prefix, p),
382
389
  markers: await this.visitMarkers(importSpecifier.markers, p),
383
390
  importType: await this.visitLeftPadded(importSpecifier.importType, p),
384
391
  specifier: await this.visitDefined(importSpecifier.specifier, p),
385
392
  type: importSpecifier.type && await this.visitType(importSpecifier.type, p)
386
- };
393
+ }));
387
394
  return (0, util_1.updateIfChanged)(importSpecifier, updates);
388
395
  }
389
396
  async visitImportAttributes(importAttributes, p) {
@@ -410,12 +417,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
410
417
  return statement;
411
418
  }
412
419
  importAttribute = statement;
413
- const updates = {
420
+ const updates = await this.visitChildrenOf(importAttribute, async () => ({
414
421
  prefix: await this.visitSpace(importAttribute.prefix, p),
415
422
  markers: await this.visitMarkers(importAttribute.markers, p),
416
423
  name: await this.visitDefined(importAttribute.name, p),
417
424
  value: await this.visitLeftPadded(importAttribute.value, p)
418
- };
425
+ }));
419
426
  return (0, util_1.updateIfChanged)(importAttribute, updates);
420
427
  }
421
428
  async visitBinaryExtensions(jsBinary, p) {
@@ -424,14 +431,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
424
431
  return expression;
425
432
  }
426
433
  jsBinary = expression;
427
- const updates = {
434
+ const updates = await this.visitChildrenOf(jsBinary, async () => ({
428
435
  prefix: await this.visitSpace(jsBinary.prefix, p),
429
436
  markers: await this.visitMarkers(jsBinary.markers, p),
430
437
  left: await this.visitDefined(jsBinary.left, p),
431
438
  operator: await this.visitLeftPadded(jsBinary.operator, p),
432
439
  right: await this.visitDefined(jsBinary.right, p),
433
440
  type: jsBinary.type && await this.visitType(jsBinary.type, p)
434
- };
441
+ }));
435
442
  return (0, util_1.updateIfChanged)(jsBinary, updates);
436
443
  }
437
444
  async visitLiteralType(literalType, p) {
@@ -440,12 +447,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
440
447
  return expression;
441
448
  }
442
449
  literalType = expression;
443
- const updates = {
450
+ const updates = await this.visitChildrenOf(literalType, async () => ({
444
451
  prefix: await this.visitSpace(literalType.prefix, p),
445
452
  markers: await this.visitMarkers(literalType.markers, p),
446
453
  literal: await this.visitDefined(literalType.literal, p),
447
454
  type: (await this.visitType(literalType.type, p))
448
- };
455
+ }));
449
456
  return (0, util_1.updateIfChanged)(literalType, updates);
450
457
  }
451
458
  async visitMappedType(mappedType, p) {
@@ -454,7 +461,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
454
461
  return expression;
455
462
  }
456
463
  mappedType = expression;
457
- const updates = {
464
+ const updates = await this.visitChildrenOf(mappedType, async () => ({
458
465
  prefix: await this.visitSpace(mappedType.prefix, p),
459
466
  markers: await this.visitMarkers(mappedType.markers, p),
460
467
  prefixToken: mappedType.prefixToken && await this.visitLeftPadded(mappedType.prefixToken, p),
@@ -464,7 +471,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
464
471
  hasQuestionToken: await this.visitLeftPadded(mappedType.hasQuestionToken, p),
465
472
  valueType: await this.visitContainer(mappedType.valueType, p),
466
473
  type: mappedType.type && await this.visitType(mappedType.type, p)
467
- };
474
+ }));
468
475
  return (0, util_1.updateIfChanged)(mappedType, updates);
469
476
  }
470
477
  async visitMappedTypeKeysRemapping(keysRemapping, p) {
@@ -473,12 +480,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
473
480
  return statement;
474
481
  }
475
482
  keysRemapping = statement;
476
- const updates = {
483
+ const updates = await this.visitChildrenOf(keysRemapping, async () => ({
477
484
  prefix: await this.visitSpace(keysRemapping.prefix, p),
478
485
  markers: await this.visitMarkers(keysRemapping.markers, p),
479
486
  typeParameter: await this.visitRightPadded(keysRemapping.typeParameter, p),
480
487
  nameType: keysRemapping.nameType && await this.visitRightPadded(keysRemapping.nameType, p)
481
- };
488
+ }));
482
489
  return (0, util_1.updateIfChanged)(keysRemapping, updates);
483
490
  }
484
491
  async visitMappedTypeParameter(mappedTypeParameter, p) {
@@ -487,12 +494,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
487
494
  return statement;
488
495
  }
489
496
  mappedTypeParameter = statement;
490
- const updates = {
497
+ const updates = await this.visitChildrenOf(mappedTypeParameter, async () => ({
491
498
  prefix: await this.visitSpace(mappedTypeParameter.prefix, p),
492
499
  markers: await this.visitMarkers(mappedTypeParameter.markers, p),
493
500
  name: await this.visitDefined(mappedTypeParameter.name, p),
494
501
  iterateType: await this.visitLeftPadded(mappedTypeParameter.iterateType, p)
495
- };
502
+ }));
496
503
  return (0, util_1.updateIfChanged)(mappedTypeParameter, updates);
497
504
  }
498
505
  async visitObjectBindingPattern(objectBindingPattern, p) {
@@ -501,7 +508,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
501
508
  return expression;
502
509
  }
503
510
  objectBindingPattern = expression;
504
- const updates = {
511
+ const updates = await this.visitChildrenOf(objectBindingPattern, async () => ({
505
512
  prefix: await this.visitSpace(objectBindingPattern.prefix, p),
506
513
  markers: await this.visitMarkers(objectBindingPattern.markers, p),
507
514
  leadingAnnotations: await (0, util_1.mapAsync)(objectBindingPattern.leadingAnnotations, item => this.visitDefined(item, p)),
@@ -509,7 +516,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
509
516
  typeExpression: objectBindingPattern.typeExpression && await this.visitDefined(objectBindingPattern.typeExpression, p),
510
517
  bindings: await this.visitContainer(objectBindingPattern.bindings, p),
511
518
  initializer: objectBindingPattern.initializer && await this.visitLeftPadded(objectBindingPattern.initializer, p)
512
- };
519
+ }));
513
520
  return (0, util_1.updateIfChanged)(objectBindingPattern, updates);
514
521
  }
515
522
  async visitPropertyAssignment(propertyAssignment, p) {
@@ -518,13 +525,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
518
525
  return statement;
519
526
  }
520
527
  propertyAssignment = statement;
521
- const updates = {
528
+ const updates = await this.visitChildrenOf(propertyAssignment, async () => ({
522
529
  prefix: await this.visitSpace(propertyAssignment.prefix, p),
523
530
  markers: await this.visitMarkers(propertyAssignment.markers, p),
524
531
  modifiers: await (0, util_1.mapAsync)(propertyAssignment.modifiers, m => this.visitDefined(m, p)),
525
532
  name: await this.visitRightPadded(propertyAssignment.name, p),
526
533
  initializer: propertyAssignment.initializer && await this.visitDefined(propertyAssignment.initializer, p)
527
- };
534
+ }));
528
535
  return (0, util_1.updateIfChanged)(propertyAssignment, updates);
529
536
  }
530
537
  async visitSatisfiesExpression(satisfiesExpression, p) {
@@ -533,13 +540,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
533
540
  return expression;
534
541
  }
535
542
  satisfiesExpression = expression;
536
- const updates = {
543
+ const updates = await this.visitChildrenOf(satisfiesExpression, async () => ({
537
544
  prefix: await this.visitSpace(satisfiesExpression.prefix, p),
538
545
  markers: await this.visitMarkers(satisfiesExpression.markers, p),
539
546
  expression: await this.visitDefined(satisfiesExpression.expression, p),
540
547
  satisfiesType: await this.visitLeftPadded(satisfiesExpression.satisfiesType, p),
541
548
  type: satisfiesExpression.type && await this.visitType(satisfiesExpression.type, p)
542
- };
549
+ }));
543
550
  return (0, util_1.updateIfChanged)(satisfiesExpression, updates);
544
551
  }
545
552
  async visitScopedVariableDeclarations(scopedVariableDeclarations, p) {
@@ -548,12 +555,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
548
555
  return statement;
549
556
  }
550
557
  scopedVariableDeclarations = statement;
551
- const updates = {
558
+ const updates = await this.visitChildrenOf(scopedVariableDeclarations, async () => ({
552
559
  prefix: await this.visitSpace(scopedVariableDeclarations.prefix, p),
553
560
  markers: await this.visitMarkers(scopedVariableDeclarations.markers, p),
554
561
  modifiers: await (0, util_1.mapAsync)(scopedVariableDeclarations.modifiers, item => this.visitDefined(item, p)),
555
562
  variables: await (0, util_1.mapAsync)(scopedVariableDeclarations.variables, item => this.visitRightPadded(item, p))
556
- };
563
+ }));
557
564
  return (0, util_1.updateIfChanged)(scopedVariableDeclarations, updates);
558
565
  }
559
566
  async visitShebang(shebang, p) {
@@ -574,12 +581,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
574
581
  return statement;
575
582
  }
576
583
  spread = statement;
577
- const updates = {
584
+ const updates = await this.visitChildrenOf(spread, async () => ({
578
585
  prefix: await this.visitSpace(spread.prefix, p),
579
586
  markers: await this.visitMarkers(spread.markers, p),
580
587
  expression: await this.visitDefined(spread.expression, p),
581
588
  type: await this.visitType(spread.type, p)
582
- };
589
+ }));
583
590
  return (0, util_1.updateIfChanged)(spread, updates);
584
591
  }
585
592
  async visitStatementExpression(statementExpression, p) {
@@ -593,11 +600,11 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
593
600
  return statement;
594
601
  }
595
602
  statementExpression = statement;
596
- const updates = {
603
+ const updates = await this.visitChildrenOf(statementExpression, async () => ({
597
604
  prefix: await this.visitSpace(statementExpression.prefix, p),
598
605
  markers: await this.visitMarkers(statementExpression.markers, p),
599
606
  statement: await this.visitDefined(statementExpression.statement, p)
600
- };
607
+ }));
601
608
  return (0, util_1.updateIfChanged)(statementExpression, updates);
602
609
  }
603
610
  async visitTaggedTemplateExpression(taggedTemplateExpression, p) {
@@ -611,14 +618,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
611
618
  return statement;
612
619
  }
613
620
  taggedTemplateExpression = statement;
614
- const updates = {
621
+ const updates = await this.visitChildrenOf(taggedTemplateExpression, async () => ({
615
622
  prefix: await this.visitSpace(taggedTemplateExpression.prefix, p),
616
623
  markers: await this.visitMarkers(taggedTemplateExpression.markers, p),
617
624
  tag: taggedTemplateExpression.tag && await this.visitRightPadded(taggedTemplateExpression.tag, p),
618
625
  typeArguments: taggedTemplateExpression.typeArguments && await this.visitContainer(taggedTemplateExpression.typeArguments, p),
619
626
  templateExpression: await this.visitDefined(taggedTemplateExpression.templateExpression, p),
620
627
  type: taggedTemplateExpression.type && await this.visitType(taggedTemplateExpression.type, p)
621
- };
628
+ }));
622
629
  return (0, util_1.updateIfChanged)(taggedTemplateExpression, updates);
623
630
  }
624
631
  async visitTemplateExpression(templateExpression, p) {
@@ -632,13 +639,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
632
639
  return statement;
633
640
  }
634
641
  templateExpression = statement;
635
- const updates = {
642
+ const updates = await this.visitChildrenOf(templateExpression, async () => ({
636
643
  prefix: await this.visitSpace(templateExpression.prefix, p),
637
644
  markers: await this.visitMarkers(templateExpression.markers, p),
638
645
  head: await this.visitDefined(templateExpression.head, p),
639
646
  spans: await (0, util_1.mapAsync)(templateExpression.spans, item => this.visitRightPadded(item, p)),
640
647
  type: templateExpression.type && await this.visitType(templateExpression.type, p)
641
- };
648
+ }));
642
649
  return (0, util_1.updateIfChanged)(templateExpression, updates);
643
650
  }
644
651
  async visitTemplateExpressionSpan(span, p) {
@@ -656,12 +663,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
656
663
  return expression;
657
664
  }
658
665
  tuple = expression;
659
- const updates = {
666
+ const updates = await this.visitChildrenOf(tuple, async () => ({
660
667
  prefix: await this.visitSpace(tuple.prefix, p),
661
668
  markers: await this.visitMarkers(tuple.markers, p),
662
669
  elements: await this.visitContainer(tuple.elements, p),
663
670
  type: tuple.type && await this.visitType(tuple.type, p)
664
- };
671
+ }));
665
672
  return (0, util_1.updateIfChanged)(tuple, updates);
666
673
  }
667
674
  async visitTypeDeclaration(typeDeclaration, p) {
@@ -670,7 +677,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
670
677
  return statement;
671
678
  }
672
679
  typeDeclaration = statement;
673
- const updates = {
680
+ const updates = await this.visitChildrenOf(typeDeclaration, async () => ({
674
681
  prefix: await this.visitSpace(typeDeclaration.prefix, p),
675
682
  markers: await this.visitMarkers(typeDeclaration.markers, p),
676
683
  modifiers: await (0, util_1.mapAsync)(typeDeclaration.modifiers, item => this.visitDefined(item, p)),
@@ -678,7 +685,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
678
685
  typeParameters: typeDeclaration.typeParameters && await this.visitDefined(typeDeclaration.typeParameters, p),
679
686
  initializer: await this.visitLeftPadded(typeDeclaration.initializer, p),
680
687
  type: typeDeclaration.type && await this.visitType(typeDeclaration.type, p)
681
- };
688
+ }));
682
689
  return (0, util_1.updateIfChanged)(typeDeclaration, updates);
683
690
  }
684
691
  async visitTypeOf(typeOf, p) {
@@ -687,12 +694,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
687
694
  return expression;
688
695
  }
689
696
  typeOf = expression;
690
- const updates = {
697
+ const updates = await this.visitChildrenOf(typeOf, async () => ({
691
698
  prefix: await this.visitSpace(typeOf.prefix, p),
692
699
  markers: await this.visitMarkers(typeOf.markers, p),
693
700
  expression: await this.visitDefined(typeOf.expression, p),
694
701
  type: typeOf.type && await this.visitType(typeOf.type, p)
695
- };
702
+ }));
696
703
  return (0, util_1.updateIfChanged)(typeOf, updates);
697
704
  }
698
705
  async visitTypeTreeExpression(typeTreeExpression, p) {
@@ -701,11 +708,18 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
701
708
  return expression;
702
709
  }
703
710
  typeTreeExpression = expression;
704
- const updates = {
711
+ const updates = await this.visitChildrenOf(typeTreeExpression, async () => ({
705
712
  prefix: await this.visitSpace(typeTreeExpression.prefix, p),
706
713
  markers: await this.visitMarkers(typeTreeExpression.markers, p),
707
714
  expression: await this.visitDefined(typeTreeExpression.expression, p)
708
- };
715
+ }));
716
+ // The parser wraps no type tree, so a visit that makes the expression one drops the wrapper
717
+ const visited = updates.expression;
718
+ if (visited !== typeTreeExpression.expression && (visited.kind === java_1.J.Kind.Identifier ||
719
+ visited.kind === java_1.J.Kind.FieldAccess || visited.kind === java_1.J.Kind.ArrayType ||
720
+ visited.kind === java_1.J.Kind.ParameterizedType)) {
721
+ return Object.assign(Object.assign({}, visited), { prefix: concatenated(updates.prefix, visited.prefix), markers: withOuterMarkers(updates.markers, visited.markers) });
722
+ }
709
723
  return (0, util_1.updateIfChanged)(typeTreeExpression, updates);
710
724
  }
711
725
  async visitAssignmentOperationExtensions(assignmentOperation, p) {
@@ -719,14 +733,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
719
733
  return statement;
720
734
  }
721
735
  assignmentOperation = statement;
722
- const updates = {
736
+ const updates = await this.visitChildrenOf(assignmentOperation, async () => ({
723
737
  prefix: await this.visitSpace(assignmentOperation.prefix, p),
724
738
  markers: await this.visitMarkers(assignmentOperation.markers, p),
725
739
  variable: await this.visitDefined(assignmentOperation.variable, p),
726
740
  operator: await this.visitLeftPadded(assignmentOperation.operator, p),
727
741
  assignment: await this.visitDefined(assignmentOperation.assignment, p),
728
742
  type: assignmentOperation.type && await this.visitType(assignmentOperation.type, p)
729
- };
743
+ }));
730
744
  return (0, util_1.updateIfChanged)(assignmentOperation, updates);
731
745
  }
732
746
  async visitIndexedAccessType(indexedAccessType, p) {
@@ -735,13 +749,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
735
749
  return expression;
736
750
  }
737
751
  indexedAccessType = expression;
738
- const updates = {
752
+ const updates = await this.visitChildrenOf(indexedAccessType, async () => ({
739
753
  prefix: await this.visitSpace(indexedAccessType.prefix, p),
740
754
  markers: await this.visitMarkers(indexedAccessType.markers, p),
741
755
  objectType: await this.visitDefined(indexedAccessType.objectType, p),
742
756
  indexType: await this.visitDefined(indexedAccessType.indexType, p),
743
757
  type: indexedAccessType.type && await this.visitType(indexedAccessType.type, p)
744
- };
758
+ }));
745
759
  return (0, util_1.updateIfChanged)(indexedAccessType, updates);
746
760
  }
747
761
  async visitIndexedAccessTypeIndexType(indexType, p) {
@@ -750,12 +764,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
750
764
  return expression;
751
765
  }
752
766
  indexType = expression;
753
- const updates = {
767
+ const updates = await this.visitChildrenOf(indexType, async () => ({
754
768
  prefix: await this.visitSpace(indexType.prefix, p),
755
769
  markers: await this.visitMarkers(indexType.markers, p),
756
770
  element: await this.visitRightPadded(indexType.element, p),
757
771
  type: indexType.type && await this.visitType(indexType.type, p)
758
- };
772
+ }));
759
773
  return (0, util_1.updateIfChanged)(indexType, updates);
760
774
  }
761
775
  async visitTypeQuery(typeQuery, p) {
@@ -764,13 +778,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
764
778
  return expression;
765
779
  }
766
780
  typeQuery = expression;
767
- const updates = {
781
+ const updates = await this.visitChildrenOf(typeQuery, async () => ({
768
782
  prefix: await this.visitSpace(typeQuery.prefix, p),
769
783
  markers: await this.visitMarkers(typeQuery.markers, p),
770
784
  typeExpression: await this.visitDefined(typeQuery.typeExpression, p),
771
785
  typeArguments: typeQuery.typeArguments && await this.visitContainer(typeQuery.typeArguments, p),
772
786
  type: typeQuery.type && await this.visitType(typeQuery.type, p)
773
- };
787
+ }));
774
788
  return (0, util_1.updateIfChanged)(typeQuery, updates);
775
789
  }
776
790
  async visitTypeInfo(typeInfo, p) {
@@ -779,11 +793,11 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
779
793
  return expression;
780
794
  }
781
795
  typeInfo = expression;
782
- const updates = {
796
+ const updates = await this.visitChildrenOf(typeInfo, async () => ({
783
797
  prefix: await this.visitSpace(typeInfo.prefix, p),
784
798
  markers: await this.visitMarkers(typeInfo.markers, p),
785
799
  typeIdentifier: await this.visitDefined(typeInfo.typeIdentifier, p)
786
- };
800
+ }));
787
801
  return (0, util_1.updateIfChanged)(typeInfo, updates);
788
802
  }
789
803
  async visitComputedPropertyName(computedPropertyName, p) {
@@ -792,11 +806,11 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
792
806
  return expression;
793
807
  }
794
808
  computedPropertyName = expression;
795
- const updates = {
809
+ const updates = await this.visitChildrenOf(computedPropertyName, async () => ({
796
810
  prefix: await this.visitSpace(computedPropertyName.prefix, p),
797
811
  markers: await this.visitMarkers(computedPropertyName.markers, p),
798
812
  expression: await this.visitRightPadded(computedPropertyName.expression, p)
799
- };
813
+ }));
800
814
  return (0, util_1.updateIfChanged)(computedPropertyName, updates);
801
815
  }
802
816
  async visitTypeOperator(typeOperator, p) {
@@ -805,11 +819,11 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
805
819
  return expression;
806
820
  }
807
821
  typeOperator = expression;
808
- const updates = {
822
+ const updates = await this.visitChildrenOf(typeOperator, async () => ({
809
823
  prefix: await this.visitSpace(typeOperator.prefix, p),
810
824
  markers: await this.visitMarkers(typeOperator.markers, p),
811
825
  expression: await this.visitLeftPadded(typeOperator.expression, p)
812
- };
826
+ }));
813
827
  return (0, util_1.updateIfChanged)(typeOperator, updates);
814
828
  }
815
829
  async visitTypePredicate(typePredicate, p) {
@@ -818,14 +832,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
818
832
  return expression;
819
833
  }
820
834
  typePredicate = expression;
821
- const updates = {
835
+ const updates = await this.visitChildrenOf(typePredicate, async () => ({
822
836
  prefix: await this.visitSpace(typePredicate.prefix, p),
823
837
  markers: await this.visitMarkers(typePredicate.markers, p),
824
838
  asserts: await this.visitLeftPadded(typePredicate.asserts, p),
825
839
  parameterName: await this.visitDefined(typePredicate.parameterName, p),
826
840
  expression: typePredicate.expression && await this.visitLeftPadded(typePredicate.expression, p),
827
841
  type: typePredicate.type && await this.visitType(typePredicate.type, p)
828
- };
842
+ }));
829
843
  return (0, util_1.updateIfChanged)(typePredicate, updates);
830
844
  }
831
845
  async visitUnion(union, p) {
@@ -834,12 +848,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
834
848
  return expression;
835
849
  }
836
850
  union = expression;
837
- const updates = {
851
+ const updates = await this.visitChildrenOf(union, async () => ({
838
852
  prefix: await this.visitSpace(union.prefix, p),
839
853
  markers: await this.visitMarkers(union.markers, p),
840
854
  types: await (0, util_1.mapAsync)(union.types, item => this.visitRightPadded(item, p)),
841
855
  type: union.type && await this.visitType(union.type, p)
842
- };
856
+ }));
843
857
  return (0, util_1.updateIfChanged)(union, updates);
844
858
  }
845
859
  async visitIntersection(intersection, p) {
@@ -848,12 +862,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
848
862
  return expression;
849
863
  }
850
864
  intersection = expression;
851
- const updates = {
865
+ const updates = await this.visitChildrenOf(intersection, async () => ({
852
866
  prefix: await this.visitSpace(intersection.prefix, p),
853
867
  markers: await this.visitMarkers(intersection.markers, p),
854
868
  types: await (0, util_1.mapAsync)(intersection.types, item => this.visitRightPadded(item, p)),
855
869
  type: intersection.type && await this.visitType(intersection.type, p)
856
- };
870
+ }));
857
871
  return (0, util_1.updateIfChanged)(intersection, updates);
858
872
  }
859
873
  async visitVoid(void_, p) {
@@ -862,11 +876,11 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
862
876
  return expression;
863
877
  }
864
878
  void_ = expression;
865
- const updates = {
879
+ const updates = await this.visitChildrenOf(void_, async () => ({
866
880
  prefix: await this.visitSpace(void_.prefix, p),
867
881
  markers: await this.visitMarkers(void_.markers, p),
868
882
  expression: await this.visitDefined(void_.expression, p)
869
- };
883
+ }));
870
884
  return (0, util_1.updateIfChanged)(void_, updates);
871
885
  }
872
886
  async visitWithStatement(withStatement, p) {
@@ -875,12 +889,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
875
889
  return statement;
876
890
  }
877
891
  withStatement = statement;
878
- const updates = {
892
+ const updates = await this.visitChildrenOf(withStatement, async () => ({
879
893
  prefix: await this.visitSpace(withStatement.prefix, p),
880
894
  markers: await this.visitMarkers(withStatement.markers, p),
881
895
  expression: await this.visitDefined(withStatement.expression, p),
882
896
  body: await this.visitRightPadded(withStatement.body, p)
883
- };
897
+ }));
884
898
  return (0, util_1.updateIfChanged)(withStatement, updates);
885
899
  }
886
900
  async visitIndexSignatureDeclaration(indexSignatureDeclaration, p) {
@@ -889,14 +903,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
889
903
  return statement;
890
904
  }
891
905
  indexSignatureDeclaration = statement;
892
- const updates = {
906
+ const updates = await this.visitChildrenOf(indexSignatureDeclaration, async () => ({
893
907
  prefix: await this.visitSpace(indexSignatureDeclaration.prefix, p),
894
908
  markers: await this.visitMarkers(indexSignatureDeclaration.markers, p),
895
909
  modifiers: await (0, util_1.mapAsync)(indexSignatureDeclaration.modifiers, item => this.visitDefined(item, p)),
896
910
  parameters: await this.visitContainer(indexSignatureDeclaration.parameters, p),
897
911
  typeExpression: await this.visitLeftPadded(indexSignatureDeclaration.typeExpression, p),
898
912
  type: indexSignatureDeclaration.type && await this.visitType(indexSignatureDeclaration.type, p)
899
- };
913
+ }));
900
914
  return (0, util_1.updateIfChanged)(indexSignatureDeclaration, updates);
901
915
  }
902
916
  async visitComputedPropertyMethodDeclaration(computedPropMethod, p) {
@@ -905,7 +919,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
905
919
  return statement;
906
920
  }
907
921
  computedPropMethod = statement;
908
- const updates = {
922
+ const updates = await this.visitChildrenOf(computedPropMethod, async () => ({
909
923
  prefix: await this.visitSpace(computedPropMethod.prefix, p),
910
924
  markers: await this.visitMarkers(computedPropMethod.markers, p),
911
925
  leadingAnnotations: await (0, util_1.mapAsync)(computedPropMethod.leadingAnnotations, item => this.visitDefined(item, p)),
@@ -916,7 +930,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
916
930
  parameters: await this.visitContainer(computedPropMethod.parameters, p),
917
931
  body: computedPropMethod.body && await this.visitDefined(computedPropMethod.body, p),
918
932
  methodType: computedPropMethod.methodType && await this.visitType(computedPropMethod.methodType, p)
919
- };
933
+ }));
920
934
  return (0, util_1.updateIfChanged)(computedPropMethod, updates);
921
935
  }
922
936
  async visitForOfLoop(forOfLoop, p) {
@@ -925,12 +939,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
925
939
  return statement;
926
940
  }
927
941
  forOfLoop = statement;
928
- const updates = {
942
+ const updates = await this.visitChildrenOf(forOfLoop, async () => ({
929
943
  prefix: await this.visitSpace(forOfLoop.prefix, p),
930
944
  markers: await this.visitMarkers(forOfLoop.markers, p),
931
945
  await: forOfLoop.await && await this.visitSpace(forOfLoop.await, p),
932
946
  loop: await this.visitDefined(forOfLoop.loop, p)
933
- };
947
+ }));
934
948
  return (0, util_1.updateIfChanged)(forOfLoop, updates);
935
949
  }
936
950
  async visitForInLoop(forInLoop, p) {
@@ -939,12 +953,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
939
953
  return statement;
940
954
  }
941
955
  forInLoop = statement;
942
- const updates = {
956
+ const updates = await this.visitChildrenOf(forInLoop, async () => ({
943
957
  prefix: await this.visitSpace(forInLoop.prefix, p),
944
958
  markers: await this.visitMarkers(forInLoop.markers, p),
945
959
  control: await this.visitDefined(forInLoop.control, p),
946
960
  body: await this.visitRightPadded(forInLoop.body, p)
947
- };
961
+ }));
948
962
  return (0, util_1.updateIfChanged)(forInLoop, updates);
949
963
  }
950
964
  async visitNamespaceDeclaration(namespaceDeclaration, p) {
@@ -953,14 +967,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
953
967
  return statement;
954
968
  }
955
969
  namespaceDeclaration = statement;
956
- const updates = {
970
+ const updates = await this.visitChildrenOf(namespaceDeclaration, async () => ({
957
971
  prefix: await this.visitSpace(namespaceDeclaration.prefix, p),
958
972
  markers: await this.visitMarkers(namespaceDeclaration.markers, p),
959
973
  modifiers: await (0, util_1.mapAsync)(namespaceDeclaration.modifiers, item => this.visitDefined(item, p)),
960
974
  keywordType: await this.visitLeftPadded(namespaceDeclaration.keywordType, p),
961
975
  name: await this.visitRightPadded(namespaceDeclaration.name, p),
962
976
  body: namespaceDeclaration.body && await this.visitDefined(namespaceDeclaration.body, p)
963
- };
977
+ }));
964
978
  return (0, util_1.updateIfChanged)(namespaceDeclaration, updates);
965
979
  }
966
980
  async visitTypeLiteral(typeLiteral, p) {
@@ -969,12 +983,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
969
983
  return expression;
970
984
  }
971
985
  typeLiteral = expression;
972
- const updates = {
986
+ const updates = await this.visitChildrenOf(typeLiteral, async () => ({
973
987
  prefix: await this.visitSpace(typeLiteral.prefix, p),
974
988
  markers: await this.visitMarkers(typeLiteral.markers, p),
975
989
  members: await this.visitDefined(typeLiteral.members, p),
976
990
  type: typeLiteral.type && await this.visitType(typeLiteral.type, p)
977
- };
991
+ }));
978
992
  return (0, util_1.updateIfChanged)(typeLiteral, updates);
979
993
  }
980
994
  async visitArrayBindingPattern(arrayBindingPattern, p) {
@@ -983,12 +997,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
983
997
  return expression;
984
998
  }
985
999
  arrayBindingPattern = expression;
986
- const updates = {
1000
+ const updates = await this.visitChildrenOf(arrayBindingPattern, async () => ({
987
1001
  prefix: await this.visitSpace(arrayBindingPattern.prefix, p),
988
1002
  markers: await this.visitMarkers(arrayBindingPattern.markers, p),
989
1003
  elements: await this.visitContainer(arrayBindingPattern.elements, p),
990
1004
  type: arrayBindingPattern.type && await this.visitType(arrayBindingPattern.type, p)
991
- };
1005
+ }));
992
1006
  return (0, util_1.updateIfChanged)(arrayBindingPattern, updates);
993
1007
  }
994
1008
  async visitBindingElement(bindingElement, p) {
@@ -997,14 +1011,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
997
1011
  return statement;
998
1012
  }
999
1013
  bindingElement = statement;
1000
- const updates = {
1014
+ const updates = await this.visitChildrenOf(bindingElement, async () => ({
1001
1015
  prefix: await this.visitSpace(bindingElement.prefix, p),
1002
1016
  markers: await this.visitMarkers(bindingElement.markers, p),
1003
1017
  propertyName: bindingElement.propertyName && await this.visitRightPadded(bindingElement.propertyName, p),
1004
1018
  name: await this.visitDefined(bindingElement.name, p),
1005
1019
  initializer: bindingElement.initializer && await this.visitLeftPadded(bindingElement.initializer, p),
1006
1020
  variableType: bindingElement.variableType && await this.visitType(bindingElement.variableType, p)
1007
- };
1021
+ }));
1008
1022
  return (0, util_1.updateIfChanged)(bindingElement, updates);
1009
1023
  }
1010
1024
  async visitExportDeclaration(exportDeclaration, p) {
@@ -1013,7 +1027,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
1013
1027
  return statement;
1014
1028
  }
1015
1029
  exportDeclaration = statement;
1016
- const updates = {
1030
+ const updates = await this.visitChildrenOf(exportDeclaration, async () => ({
1017
1031
  prefix: await this.visitSpace(exportDeclaration.prefix, p),
1018
1032
  markers: await this.visitMarkers(exportDeclaration.markers, p),
1019
1033
  modifiers: await (0, util_1.mapAsync)(exportDeclaration.modifiers, item => this.visitDefined(item, p)),
@@ -1021,7 +1035,7 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
1021
1035
  exportClause: exportDeclaration.exportClause && await this.visitDefined(exportDeclaration.exportClause, p),
1022
1036
  moduleSpecifier: exportDeclaration.moduleSpecifier && await this.visitLeftPadded(exportDeclaration.moduleSpecifier, p),
1023
1037
  attributes: exportDeclaration.attributes && await this.visitDefined(exportDeclaration.attributes, p)
1024
- };
1038
+ }));
1025
1039
  return (0, util_1.updateIfChanged)(exportDeclaration, updates);
1026
1040
  }
1027
1041
  async visitExportAssignment(exportAssignment, p) {
@@ -1030,11 +1044,11 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
1030
1044
  return statement;
1031
1045
  }
1032
1046
  exportAssignment = statement;
1033
- const updates = {
1047
+ const updates = await this.visitChildrenOf(exportAssignment, async () => ({
1034
1048
  prefix: await this.visitSpace(exportAssignment.prefix, p),
1035
1049
  markers: await this.visitMarkers(exportAssignment.markers, p),
1036
1050
  expression: await this.visitLeftPadded(exportAssignment.expression, p)
1037
- };
1051
+ }));
1038
1052
  return (0, util_1.updateIfChanged)(exportAssignment, updates);
1039
1053
  }
1040
1054
  async visitNamedExports(namedExports, p) {
@@ -1043,12 +1057,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
1043
1057
  return expression;
1044
1058
  }
1045
1059
  namedExports = expression;
1046
- const updates = {
1060
+ const updates = await this.visitChildrenOf(namedExports, async () => ({
1047
1061
  prefix: await this.visitSpace(namedExports.prefix, p),
1048
1062
  markers: await this.visitMarkers(namedExports.markers, p),
1049
1063
  elements: await this.visitContainer(namedExports.elements, p),
1050
1064
  type: namedExports.type && await this.visitType(namedExports.type, p)
1051
- };
1065
+ }));
1052
1066
  return (0, util_1.updateIfChanged)(namedExports, updates);
1053
1067
  }
1054
1068
  async visitExportSpecifier(exportSpecifier, p) {
@@ -1057,13 +1071,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
1057
1071
  return expression;
1058
1072
  }
1059
1073
  exportSpecifier = expression;
1060
- const updates = {
1074
+ const updates = await this.visitChildrenOf(exportSpecifier, async () => ({
1061
1075
  prefix: await this.visitSpace(exportSpecifier.prefix, p),
1062
1076
  markers: await this.visitMarkers(exportSpecifier.markers, p),
1063
1077
  typeOnly: await this.visitLeftPadded(exportSpecifier.typeOnly, p),
1064
1078
  specifier: await this.visitDefined(exportSpecifier.specifier, p),
1065
1079
  type: exportSpecifier.type && await this.visitType(exportSpecifier.type, p)
1066
- };
1080
+ }));
1067
1081
  return (0, util_1.updateIfChanged)(exportSpecifier, updates);
1068
1082
  }
1069
1083
  static createJavaScriptDispatch() {