hermes-transform 0.36.1 → 0.37.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 (115) hide show
  1. package/dist/detachedNode.js +3 -57
  2. package/dist/detachedNode.js.flow +12 -12
  3. package/dist/generated/TransformCloneSignatures.js.flow +1 -1
  4. package/dist/generated/TransformModifySignatures.js.flow +1 -1
  5. package/dist/generated/TransformReplaceSignatures.js.flow +207 -207
  6. package/dist/generated/node-types.js +0 -21
  7. package/dist/generated/node-types.js.flow +1086 -978
  8. package/dist/generated/special-case-node-types/Comment.js +0 -13
  9. package/dist/generated/special-case-node-types/Comment.js.flow +2 -2
  10. package/dist/generated/special-case-node-types/DeclareExportDeclaration.js +0 -12
  11. package/dist/generated/special-case-node-types/DeclareExportDeclaration.js.flow +10 -10
  12. package/dist/generated/special-case-node-types/DeclareHook.js +0 -9
  13. package/dist/generated/special-case-node-types/DeclareHook.js.flow +4 -4
  14. package/dist/generated/special-case-node-types/ExportNamedDeclaration.js +0 -11
  15. package/dist/generated/special-case-node-types/ExportNamedDeclaration.js.flow +9 -9
  16. package/dist/generated/special-case-node-types/Literal.js +1 -12
  17. package/dist/generated/special-case-node-types/Literal.js.flow +20 -20
  18. package/dist/generated/special-case-node-types/ObjectTypeProperty.js +0 -10
  19. package/dist/generated/special-case-node-types/ObjectTypeProperty.js.flow +23 -21
  20. package/dist/generated/special-case-node-types/Property.js +0 -9
  21. package/dist/generated/special-case-node-types/Property.js.flow +50 -42
  22. package/dist/generated/special-case-node-types/misc.js +6 -35
  23. package/dist/generated/special-case-node-types/misc.js.flow +56 -48
  24. package/dist/index.js +0 -9
  25. package/dist/src/detachedNode.js +3 -57
  26. package/dist/src/generated/node-types.js +0 -21
  27. package/dist/src/generated/special-case-node-types/Comment.js +0 -13
  28. package/dist/src/generated/special-case-node-types/DeclareExportDeclaration.js +0 -12
  29. package/dist/src/generated/special-case-node-types/DeclareHook.js +0 -9
  30. package/dist/src/generated/special-case-node-types/ExportNamedDeclaration.js +0 -11
  31. package/dist/src/generated/special-case-node-types/Literal.js +1 -12
  32. package/dist/src/generated/special-case-node-types/ObjectTypeProperty.js +0 -10
  33. package/dist/src/generated/special-case-node-types/Property.js +0 -9
  34. package/dist/src/generated/special-case-node-types/misc.js +6 -35
  35. package/dist/src/index.js +0 -9
  36. package/dist/src/transform/Errors.js +0 -9
  37. package/dist/src/transform/MutationContext.js +1 -28
  38. package/dist/src/transform/TransformContext.js +0 -18
  39. package/dist/src/transform/comments/comments.js +12 -78
  40. package/dist/src/transform/comments/prettier/common/util.js +4 -133
  41. package/dist/src/transform/comments/prettier/language-js/comments.js +12 -137
  42. package/dist/src/transform/comments/prettier/language-js/loc.js +1 -13
  43. package/dist/src/transform/comments/prettier/language-js/printer-estree.js +1 -10
  44. package/dist/src/transform/comments/prettier/language-js/utils.js +3 -33
  45. package/dist/src/transform/comments/prettier/main/comments.js +11 -77
  46. package/dist/src/transform/comments/prettier/utils/get-last.js +0 -8
  47. package/dist/src/transform/mutations/AddComments.js +0 -9
  48. package/dist/src/transform/mutations/CloneCommentsTo.js +0 -9
  49. package/dist/src/transform/mutations/InsertStatement.js +4 -16
  50. package/dist/src/transform/mutations/ModifyNodeInPlace.js +4 -17
  51. package/dist/src/transform/mutations/RemoveComment.js +0 -10
  52. package/dist/src/transform/mutations/RemoveNode.js +1 -23
  53. package/dist/src/transform/mutations/RemoveStatement.js +0 -16
  54. package/dist/src/transform/mutations/ReplaceNode.js +2 -16
  55. package/dist/src/transform/mutations/ReplaceStatementWithMany.js +2 -14
  56. package/dist/src/transform/mutations/utils/getStatementParent.js +3 -19
  57. package/dist/src/transform/mutations/utils/isValidModuleDeclarationParent.js +5 -20
  58. package/dist/src/transform/parse.js +6 -25
  59. package/dist/src/transform/print.js +9 -35
  60. package/dist/src/transform/transform.js +0 -9
  61. package/dist/src/transform/transformAST.js +3 -31
  62. package/dist/src/traverse/NodeEventGenerator.js +2 -108
  63. package/dist/src/traverse/SafeEmitter.js +0 -19
  64. package/dist/src/traverse/esquery.js +0 -18
  65. package/dist/src/traverse/traverse.js +1 -22
  66. package/dist/transform/Errors.js +0 -9
  67. package/dist/transform/MutationContext.js +1 -28
  68. package/dist/transform/MutationContext.js.flow +3 -3
  69. package/dist/transform/TransformContext.js +0 -18
  70. package/dist/transform/TransformContext.js.flow +60 -54
  71. package/dist/transform/comments/comments.js +12 -78
  72. package/dist/transform/comments/comments.js.flow +8 -8
  73. package/dist/transform/comments/prettier/common/util.js +4 -133
  74. package/dist/transform/comments/prettier/language-js/comments.js +12 -137
  75. package/dist/transform/comments/prettier/language-js/loc.js +1 -13
  76. package/dist/transform/comments/prettier/language-js/printer-estree.js +1 -10
  77. package/dist/transform/comments/prettier/language-js/utils.js +3 -33
  78. package/dist/transform/comments/prettier/main/comments.js +11 -77
  79. package/dist/transform/comments/prettier/utils/get-last.js +0 -8
  80. package/dist/transform/mutations/AddComments.js +0 -9
  81. package/dist/transform/mutations/AddComments.js.flow +2 -2
  82. package/dist/transform/mutations/CloneCommentsTo.js +0 -9
  83. package/dist/transform/mutations/CloneCommentsTo.js.flow +1 -1
  84. package/dist/transform/mutations/InsertStatement.js +4 -16
  85. package/dist/transform/mutations/InsertStatement.js.flow +7 -6
  86. package/dist/transform/mutations/ModifyNodeInPlace.js +4 -17
  87. package/dist/transform/mutations/ModifyNodeInPlace.js.flow +2 -2
  88. package/dist/transform/mutations/RemoveComment.js +0 -10
  89. package/dist/transform/mutations/RemoveComment.js.flow +4 -4
  90. package/dist/transform/mutations/RemoveNode.js +1 -23
  91. package/dist/transform/mutations/RemoveNode.js.flow +9 -9
  92. package/dist/transform/mutations/RemoveStatement.js +0 -16
  93. package/dist/transform/mutations/RemoveStatement.js.flow +3 -3
  94. package/dist/transform/mutations/ReplaceNode.js +2 -16
  95. package/dist/transform/mutations/ReplaceNode.js.flow +6 -6
  96. package/dist/transform/mutations/ReplaceStatementWithMany.js +2 -14
  97. package/dist/transform/mutations/ReplaceStatementWithMany.js.flow +7 -8
  98. package/dist/transform/mutations/utils/getStatementParent.js +3 -19
  99. package/dist/transform/mutations/utils/getStatementParent.js.flow +5 -6
  100. package/dist/transform/mutations/utils/isValidModuleDeclarationParent.js +5 -20
  101. package/dist/transform/mutations/utils/isValidModuleDeclarationParent.js.flow +4 -3
  102. package/dist/transform/parse.js +6 -25
  103. package/dist/transform/print.js +9 -35
  104. package/dist/transform/print.js.flow +7 -15
  105. package/dist/transform/transform.js +0 -9
  106. package/dist/transform/transformAST.js +3 -31
  107. package/dist/traverse/NodeEventGenerator.js +2 -108
  108. package/dist/traverse/NodeEventGenerator.js.flow +13 -9
  109. package/dist/traverse/SafeEmitter.js +0 -19
  110. package/dist/traverse/SafeEmitter.js.flow +2 -2
  111. package/dist/traverse/esquery.js +0 -18
  112. package/dist/traverse/esquery.js.flow +10 -10
  113. package/dist/traverse/traverse.js +1 -22
  114. package/dist/traverse/traverse.js.flow +4 -4
  115. package/package.json +7 -12
@@ -17,7 +17,7 @@
17
17
 
18
18
  // lint directives to let us do some basic validation of generated files
19
19
  /* eslint no-undef: 'error', no-unused-vars: ['error', {vars: "local"}], no-redeclare: 'error' */
20
- /* global $NonMaybeType, Partial, $ReadOnly, $ReadOnlyArray, $FlowFixMe */
20
+ /* global NonNullable, Partial, Readonly, ReadonlyArray, $FlowFixMe */
21
21
 
22
22
  'use strict';
23
23
 
@@ -228,259 +228,299 @@ import {
228
228
  export type AnyTypeAnnotationProps = {};
229
229
 
230
230
  export type ArrayExpressionProps = {
231
- +elements: $ReadOnlyArray<
231
+ readonly elements: ReadonlyArray<
232
232
  MaybeDetachedNode<ArrayExpressionType['elements'][number]>,
233
233
  >,
234
- +trailingComma: ArrayExpressionType['trailingComma'],
234
+ readonly trailingComma: ArrayExpressionType['trailingComma'],
235
235
  };
236
236
 
237
237
  export type ArrayPatternProps = {
238
- +elements: $ReadOnlyArray<
238
+ readonly elements: ReadonlyArray<
239
239
  MaybeDetachedNode<ArrayPatternType['elements'][number]>,
240
240
  >,
241
- +typeAnnotation?: ?MaybeDetachedNode<ArrayPatternType['typeAnnotation']>,
241
+ readonly typeAnnotation?: ?MaybeDetachedNode<
242
+ ArrayPatternType['typeAnnotation'],
243
+ >,
242
244
  };
243
245
 
244
246
  export type ArrayTypeAnnotationProps = {
245
- +elementType: MaybeDetachedNode<ArrayTypeAnnotationType['elementType']>,
247
+ readonly elementType: MaybeDetachedNode<
248
+ ArrayTypeAnnotationType['elementType'],
249
+ >,
246
250
  };
247
251
 
248
252
  export type AsConstExpressionProps = {
249
- +expression: MaybeDetachedNode<AsConstExpressionType['expression']>,
253
+ readonly expression: MaybeDetachedNode<AsConstExpressionType['expression']>,
250
254
  };
251
255
 
252
256
  export type AsExpressionProps = {
253
- +expression: MaybeDetachedNode<AsExpressionType['expression']>,
254
- +typeAnnotation: MaybeDetachedNode<AsExpressionType['typeAnnotation']>,
257
+ readonly expression: MaybeDetachedNode<AsExpressionType['expression']>,
258
+ readonly typeAnnotation: MaybeDetachedNode<
259
+ AsExpressionType['typeAnnotation'],
260
+ >,
255
261
  };
256
262
 
257
263
  export type AssignmentExpressionProps = {
258
- +operator: AssignmentExpressionType['operator'],
259
- +left: MaybeDetachedNode<AssignmentExpressionType['left']>,
260
- +right: MaybeDetachedNode<AssignmentExpressionType['right']>,
264
+ readonly operator: AssignmentExpressionType['operator'],
265
+ readonly left: MaybeDetachedNode<AssignmentExpressionType['left']>,
266
+ readonly right: MaybeDetachedNode<AssignmentExpressionType['right']>,
261
267
  };
262
268
 
263
269
  export type AssignmentPatternProps = {
264
- +left: MaybeDetachedNode<AssignmentPatternType['left']>,
265
- +right: MaybeDetachedNode<AssignmentPatternType['right']>,
270
+ readonly left: MaybeDetachedNode<AssignmentPatternType['left']>,
271
+ readonly right: MaybeDetachedNode<AssignmentPatternType['right']>,
266
272
  };
267
273
 
268
274
  export type AwaitExpressionProps = {
269
- +argument: MaybeDetachedNode<AwaitExpressionType['argument']>,
275
+ readonly argument: MaybeDetachedNode<AwaitExpressionType['argument']>,
270
276
  };
271
277
 
272
278
  export type BigIntLiteralTypeAnnotationProps = {
273
- +raw: BigIntLiteralTypeAnnotationType['raw'],
279
+ readonly raw: BigIntLiteralTypeAnnotationType['raw'],
274
280
  };
275
281
 
276
282
  export type BigIntTypeAnnotationProps = {};
277
283
 
278
284
  export type BinaryExpressionProps = {
279
- +left: MaybeDetachedNode<BinaryExpressionType['left']>,
280
- +right: MaybeDetachedNode<BinaryExpressionType['right']>,
281
- +operator: BinaryExpressionType['operator'],
285
+ readonly left: MaybeDetachedNode<BinaryExpressionType['left']>,
286
+ readonly right: MaybeDetachedNode<BinaryExpressionType['right']>,
287
+ readonly operator: BinaryExpressionType['operator'],
282
288
  };
283
289
 
284
290
  export type BooleanLiteralTypeAnnotationProps = {
285
- +value: BooleanLiteralTypeAnnotationType['value'],
286
- +raw: BooleanLiteralTypeAnnotationType['raw'],
291
+ readonly value: BooleanLiteralTypeAnnotationType['value'],
292
+ readonly raw: BooleanLiteralTypeAnnotationType['raw'],
287
293
  };
288
294
 
289
295
  export type BooleanTypeAnnotationProps = {};
290
296
 
291
297
  export type BreakStatementProps = {
292
- +label?: ?MaybeDetachedNode<BreakStatementType['label']>,
298
+ readonly label?: ?MaybeDetachedNode<BreakStatementType['label']>,
293
299
  };
294
300
 
295
301
  export type CallExpressionProps = {
296
- +callee: MaybeDetachedNode<CallExpressionType['callee']>,
297
- +typeArguments?: ?MaybeDetachedNode<CallExpressionType['typeArguments']>,
298
- +arguments: $ReadOnlyArray<
302
+ readonly callee: MaybeDetachedNode<CallExpressionType['callee']>,
303
+ readonly typeArguments?: ?MaybeDetachedNode<
304
+ CallExpressionType['typeArguments'],
305
+ >,
306
+ readonly arguments: ReadonlyArray<
299
307
  MaybeDetachedNode<CallExpressionType['arguments'][number]>,
300
308
  >,
301
309
  };
302
310
 
303
311
  export type CatchClauseProps = {
304
- +param?: ?MaybeDetachedNode<CatchClauseType['param']>,
305
- +body: MaybeDetachedNode<CatchClauseType['body']>,
312
+ readonly param?: ?MaybeDetachedNode<CatchClauseType['param']>,
313
+ readonly body: MaybeDetachedNode<CatchClauseType['body']>,
306
314
  };
307
315
 
308
316
  export type ChainExpressionProps = {
309
- +expression: MaybeDetachedNode<ChainExpressionType['expression']>,
317
+ readonly expression: MaybeDetachedNode<ChainExpressionType['expression']>,
310
318
  };
311
319
 
312
320
  export type ClassBodyProps = {
313
- +body: $ReadOnlyArray<MaybeDetachedNode<ClassBodyType['body'][number]>>,
321
+ readonly body: ReadonlyArray<
322
+ MaybeDetachedNode<ClassBodyType['body'][number]>,
323
+ >,
314
324
  };
315
325
 
316
326
  export type ClassExpressionProps = {
317
- +id?: ?MaybeDetachedNode<ClassExpressionType['id']>,
318
- +typeParameters?: ?MaybeDetachedNode<ClassExpressionType['typeParameters']>,
319
- +superClass?: ?MaybeDetachedNode<ClassExpressionType['superClass']>,
320
- +superTypeArguments?: ?MaybeDetachedNode<
327
+ readonly id?: ?MaybeDetachedNode<ClassExpressionType['id']>,
328
+ readonly typeParameters?: ?MaybeDetachedNode<
329
+ ClassExpressionType['typeParameters'],
330
+ >,
331
+ readonly superClass?: ?MaybeDetachedNode<ClassExpressionType['superClass']>,
332
+ readonly superTypeArguments?: ?MaybeDetachedNode<
321
333
  ClassExpressionType['superTypeArguments'],
322
334
  >,
323
- +implements: $ReadOnlyArray<
335
+ readonly implements: ReadonlyArray<
324
336
  MaybeDetachedNode<ClassExpressionType['implements'][number]>,
325
337
  >,
326
- +decorators: $ReadOnlyArray<
338
+ readonly decorators: ReadonlyArray<
327
339
  MaybeDetachedNode<ClassExpressionType['decorators'][number]>,
328
340
  >,
329
- +body: MaybeDetachedNode<ClassExpressionType['body']>,
341
+ readonly body: MaybeDetachedNode<ClassExpressionType['body']>,
330
342
  };
331
343
 
332
344
  export type ClassImplementsProps = {
333
- +id: MaybeDetachedNode<ClassImplementsType['id']>,
334
- +typeParameters?: ?MaybeDetachedNode<ClassImplementsType['typeParameters']>,
345
+ readonly id: MaybeDetachedNode<ClassImplementsType['id']>,
346
+ readonly typeParameters?: ?MaybeDetachedNode<
347
+ ClassImplementsType['typeParameters'],
348
+ >,
335
349
  };
336
350
 
337
351
  export type ComponentDeclarationProps = {
338
- +id: MaybeDetachedNode<ComponentDeclarationType['id']>,
339
- +params: $ReadOnlyArray<
352
+ readonly id: MaybeDetachedNode<ComponentDeclarationType['id']>,
353
+ readonly params: ReadonlyArray<
340
354
  MaybeDetachedNode<ComponentDeclarationType['params'][number]>,
341
355
  >,
342
- +body: MaybeDetachedNode<ComponentDeclarationType['body']>,
343
- +typeParameters?: ?MaybeDetachedNode<
356
+ readonly body: MaybeDetachedNode<ComponentDeclarationType['body']>,
357
+ readonly typeParameters?: ?MaybeDetachedNode<
344
358
  ComponentDeclarationType['typeParameters'],
345
359
  >,
346
- +rendersType?: ?MaybeDetachedNode<ComponentDeclarationType['rendersType']>,
347
- +async: ComponentDeclarationType['async'],
360
+ readonly rendersType?: ?MaybeDetachedNode<
361
+ ComponentDeclarationType['rendersType'],
362
+ >,
363
+ readonly async: ComponentDeclarationType['async'],
348
364
  };
349
365
 
350
366
  export type ComponentParameterProps = {
351
- +name: MaybeDetachedNode<ComponentParameterType['name']>,
352
- +local: MaybeDetachedNode<ComponentParameterType['local']>,
353
- +shorthand: ComponentParameterType['shorthand'],
367
+ readonly name: MaybeDetachedNode<ComponentParameterType['name']>,
368
+ readonly local: MaybeDetachedNode<ComponentParameterType['local']>,
369
+ readonly shorthand: ComponentParameterType['shorthand'],
354
370
  };
355
371
 
356
372
  export type ComponentTypeAnnotationProps = {
357
- +params: $ReadOnlyArray<
373
+ readonly params: ReadonlyArray<
358
374
  MaybeDetachedNode<ComponentTypeAnnotationType['params'][number]>,
359
375
  >,
360
- +rest?: ?MaybeDetachedNode<ComponentTypeAnnotationType['rest']>,
361
- +typeParameters?: ?MaybeDetachedNode<
376
+ readonly rest?: ?MaybeDetachedNode<ComponentTypeAnnotationType['rest']>,
377
+ readonly typeParameters?: ?MaybeDetachedNode<
362
378
  ComponentTypeAnnotationType['typeParameters'],
363
379
  >,
364
- +rendersType?: ?MaybeDetachedNode<ComponentTypeAnnotationType['rendersType']>,
380
+ readonly rendersType?: ?MaybeDetachedNode<
381
+ ComponentTypeAnnotationType['rendersType'],
382
+ >,
365
383
  };
366
384
 
367
385
  export type ComponentTypeParameterProps = {
368
- +name?: ?MaybeDetachedNode<ComponentTypeParameterType['name']>,
369
- +typeAnnotation: MaybeDetachedNode<
386
+ readonly name?: ?MaybeDetachedNode<ComponentTypeParameterType['name']>,
387
+ readonly typeAnnotation: MaybeDetachedNode<
370
388
  ComponentTypeParameterType['typeAnnotation'],
371
389
  >,
372
- +optional: ComponentTypeParameterType['optional'],
390
+ readonly optional: ComponentTypeParameterType['optional'],
373
391
  };
374
392
 
375
393
  export type ConditionalExpressionProps = {
376
- +test: MaybeDetachedNode<ConditionalExpressionType['test']>,
377
- +alternate: MaybeDetachedNode<ConditionalExpressionType['alternate']>,
378
- +consequent: MaybeDetachedNode<ConditionalExpressionType['consequent']>,
394
+ readonly test: MaybeDetachedNode<ConditionalExpressionType['test']>,
395
+ readonly alternate: MaybeDetachedNode<ConditionalExpressionType['alternate']>,
396
+ readonly consequent: MaybeDetachedNode<
397
+ ConditionalExpressionType['consequent'],
398
+ >,
379
399
  };
380
400
 
381
401
  export type ConditionalTypeAnnotationProps = {
382
- +checkType: MaybeDetachedNode<ConditionalTypeAnnotationType['checkType']>,
383
- +extendsType: MaybeDetachedNode<ConditionalTypeAnnotationType['extendsType']>,
384
- +trueType: MaybeDetachedNode<ConditionalTypeAnnotationType['trueType']>,
385
- +falseType: MaybeDetachedNode<ConditionalTypeAnnotationType['falseType']>,
402
+ readonly checkType: MaybeDetachedNode<
403
+ ConditionalTypeAnnotationType['checkType'],
404
+ >,
405
+ readonly extendsType: MaybeDetachedNode<
406
+ ConditionalTypeAnnotationType['extendsType'],
407
+ >,
408
+ readonly trueType: MaybeDetachedNode<
409
+ ConditionalTypeAnnotationType['trueType'],
410
+ >,
411
+ readonly falseType: MaybeDetachedNode<
412
+ ConditionalTypeAnnotationType['falseType'],
413
+ >,
386
414
  };
387
415
 
388
416
  export type ContinueStatementProps = {
389
- +label?: ?MaybeDetachedNode<ContinueStatementType['label']>,
417
+ readonly label?: ?MaybeDetachedNode<ContinueStatementType['label']>,
390
418
  };
391
419
 
392
420
  export type DebuggerStatementProps = {};
393
421
 
394
422
  export type DeclareClassProps = {
395
- +id: MaybeDetachedNode<DeclareClassType['id']>,
396
- +typeParameters?: ?MaybeDetachedNode<DeclareClassType['typeParameters']>,
397
- +extends: $ReadOnlyArray<
423
+ readonly id: MaybeDetachedNode<DeclareClassType['id']>,
424
+ readonly typeParameters?: ?MaybeDetachedNode<
425
+ DeclareClassType['typeParameters'],
426
+ >,
427
+ readonly extends: ReadonlyArray<
398
428
  MaybeDetachedNode<DeclareClassType['extends'][number]>,
399
429
  >,
400
- +implements: $ReadOnlyArray<
430
+ readonly implements: ReadonlyArray<
401
431
  MaybeDetachedNode<DeclareClassType['implements'][number]>,
402
432
  >,
403
- +mixins: $ReadOnlyArray<
433
+ readonly mixins: ReadonlyArray<
404
434
  MaybeDetachedNode<DeclareClassType['mixins'][number]>,
405
435
  >,
406
- +body: MaybeDetachedNode<DeclareClassType['body']>,
436
+ readonly body: MaybeDetachedNode<DeclareClassType['body']>,
407
437
  };
408
438
 
409
439
  export type DeclareComponentProps = {
410
- +id: MaybeDetachedNode<DeclareComponentType['id']>,
411
- +params: $ReadOnlyArray<
440
+ readonly id: MaybeDetachedNode<DeclareComponentType['id']>,
441
+ readonly params: ReadonlyArray<
412
442
  MaybeDetachedNode<DeclareComponentType['params'][number]>,
413
443
  >,
414
- +rest?: ?MaybeDetachedNode<DeclareComponentType['rest']>,
415
- +typeParameters?: ?MaybeDetachedNode<DeclareComponentType['typeParameters']>,
416
- +rendersType?: ?MaybeDetachedNode<DeclareComponentType['rendersType']>,
444
+ readonly rest?: ?MaybeDetachedNode<DeclareComponentType['rest']>,
445
+ readonly typeParameters?: ?MaybeDetachedNode<
446
+ DeclareComponentType['typeParameters'],
447
+ >,
448
+ readonly rendersType?: ?MaybeDetachedNode<
449
+ DeclareComponentType['rendersType'],
450
+ >,
417
451
  };
418
452
 
419
453
  export type DeclaredPredicateProps = {
420
- +value: MaybeDetachedNode<DeclaredPredicateType['value']>,
454
+ readonly value: MaybeDetachedNode<DeclaredPredicateType['value']>,
421
455
  };
422
456
 
423
457
  export type DeclareEnumProps = {
424
- +id: MaybeDetachedNode<DeclareEnumType['id']>,
425
- +body: MaybeDetachedNode<DeclareEnumType['body']>,
458
+ readonly id: MaybeDetachedNode<DeclareEnumType['id']>,
459
+ readonly body: MaybeDetachedNode<DeclareEnumType['body']>,
426
460
  };
427
461
 
428
462
  export type DeclareExportAllDeclarationProps = {
429
- +source: MaybeDetachedNode<DeclareExportAllDeclarationType['source']>,
463
+ readonly source: MaybeDetachedNode<DeclareExportAllDeclarationType['source']>,
430
464
  };
431
465
 
432
466
  export type DeclareInterfaceProps = {
433
- +id: MaybeDetachedNode<DeclareInterfaceType['id']>,
434
- +typeParameters?: ?MaybeDetachedNode<DeclareInterfaceType['typeParameters']>,
435
- +extends: $ReadOnlyArray<
467
+ readonly id: MaybeDetachedNode<DeclareInterfaceType['id']>,
468
+ readonly typeParameters?: ?MaybeDetachedNode<
469
+ DeclareInterfaceType['typeParameters'],
470
+ >,
471
+ readonly extends: ReadonlyArray<
436
472
  MaybeDetachedNode<DeclareInterfaceType['extends'][number]>,
437
473
  >,
438
- +body: MaybeDetachedNode<DeclareInterfaceType['body']>,
474
+ readonly body: MaybeDetachedNode<DeclareInterfaceType['body']>,
439
475
  };
440
476
 
441
477
  export type DeclareModuleProps = {
442
- +id: MaybeDetachedNode<DeclareModuleType['id']>,
443
- +body: MaybeDetachedNode<DeclareModuleType['body']>,
478
+ readonly id: MaybeDetachedNode<DeclareModuleType['id']>,
479
+ readonly body: MaybeDetachedNode<DeclareModuleType['body']>,
444
480
  };
445
481
 
446
482
  export type DeclareModuleExportsProps = {
447
- +typeAnnotation: MaybeDetachedNode<
483
+ readonly typeAnnotation: MaybeDetachedNode<
448
484
  DeclareModuleExportsType['typeAnnotation'],
449
485
  >,
450
486
  };
451
487
 
452
488
  export type DeclareNamespaceProps = {
453
- +id: MaybeDetachedNode<DeclareNamespaceType['id']>,
454
- +body: MaybeDetachedNode<DeclareNamespaceType['body']>,
489
+ readonly id: MaybeDetachedNode<DeclareNamespaceType['id']>,
490
+ readonly body: MaybeDetachedNode<DeclareNamespaceType['body']>,
455
491
  };
456
492
 
457
493
  export type DeclareOpaqueTypeProps = {
458
- +id: MaybeDetachedNode<DeclareOpaqueTypeType['id']>,
459
- +typeParameters?: ?MaybeDetachedNode<DeclareOpaqueTypeType['typeParameters']>,
460
- +impltype?: ?MaybeDetachedNode<DeclareOpaqueTypeType['impltype']>,
461
- +lowerBound?: ?MaybeDetachedNode<DeclareOpaqueTypeType['lowerBound']>,
462
- +upperBound?: ?MaybeDetachedNode<DeclareOpaqueTypeType['upperBound']>,
463
- +supertype?: ?MaybeDetachedNode<DeclareOpaqueTypeType['supertype']>,
494
+ readonly id: MaybeDetachedNode<DeclareOpaqueTypeType['id']>,
495
+ readonly typeParameters?: ?MaybeDetachedNode<
496
+ DeclareOpaqueTypeType['typeParameters'],
497
+ >,
498
+ readonly impltype?: ?MaybeDetachedNode<DeclareOpaqueTypeType['impltype']>,
499
+ readonly lowerBound?: ?MaybeDetachedNode<DeclareOpaqueTypeType['lowerBound']>,
500
+ readonly upperBound?: ?MaybeDetachedNode<DeclareOpaqueTypeType['upperBound']>,
501
+ readonly supertype?: ?MaybeDetachedNode<DeclareOpaqueTypeType['supertype']>,
464
502
  };
465
503
 
466
504
  export type DeclareTypeAliasProps = {
467
- +id: MaybeDetachedNode<DeclareTypeAliasType['id']>,
468
- +typeParameters?: ?MaybeDetachedNode<DeclareTypeAliasType['typeParameters']>,
469
- +right: MaybeDetachedNode<DeclareTypeAliasType['right']>,
505
+ readonly id: MaybeDetachedNode<DeclareTypeAliasType['id']>,
506
+ readonly typeParameters?: ?MaybeDetachedNode<
507
+ DeclareTypeAliasType['typeParameters'],
508
+ >,
509
+ readonly right: MaybeDetachedNode<DeclareTypeAliasType['right']>,
470
510
  };
471
511
 
472
512
  export type DeclareVariableProps = {
473
- +id: MaybeDetachedNode<DeclareVariableType['id']>,
474
- +kind: DeclareVariableType['kind'],
513
+ readonly id: MaybeDetachedNode<DeclareVariableType['id']>,
514
+ readonly kind: DeclareVariableType['kind'],
475
515
  };
476
516
 
477
517
  export type DecoratorProps = {
478
- +expression: MaybeDetachedNode<DecoratorType['expression']>,
518
+ readonly expression: MaybeDetachedNode<DecoratorType['expression']>,
479
519
  };
480
520
 
481
521
  export type DoWhileStatementProps = {
482
- +body: MaybeDetachedNode<DoWhileStatementType['body']>,
483
- +test: MaybeDetachedNode<DoWhileStatementType['test']>,
522
+ readonly body: MaybeDetachedNode<DoWhileStatementType['body']>,
523
+ readonly test: MaybeDetachedNode<DoWhileStatementType['test']>,
484
524
  };
485
525
 
486
526
  export type EmptyStatementProps = {};
@@ -488,471 +528,501 @@ export type EmptyStatementProps = {};
488
528
  export type EmptyTypeAnnotationProps = {};
489
529
 
490
530
  export type EnumBigIntBodyProps = {
491
- +members: $ReadOnlyArray<
531
+ readonly members: ReadonlyArray<
492
532
  MaybeDetachedNode<EnumBigIntBodyType['members'][number]>,
493
533
  >,
494
- +explicitType: EnumBigIntBodyType['explicitType'],
495
- +hasUnknownMembers: EnumBigIntBodyType['hasUnknownMembers'],
534
+ readonly explicitType: EnumBigIntBodyType['explicitType'],
535
+ readonly hasUnknownMembers: EnumBigIntBodyType['hasUnknownMembers'],
496
536
  };
497
537
 
498
538
  export type EnumBigIntMemberProps = {
499
- +id: MaybeDetachedNode<EnumBigIntMemberType['id']>,
500
- +init: MaybeDetachedNode<EnumBigIntMemberType['init']>,
539
+ readonly id: MaybeDetachedNode<EnumBigIntMemberType['id']>,
540
+ readonly init: MaybeDetachedNode<EnumBigIntMemberType['init']>,
501
541
  };
502
542
 
503
543
  export type EnumBooleanBodyProps = {
504
- +members: $ReadOnlyArray<
544
+ readonly members: ReadonlyArray<
505
545
  MaybeDetachedNode<EnumBooleanBodyType['members'][number]>,
506
546
  >,
507
- +explicitType: EnumBooleanBodyType['explicitType'],
508
- +hasUnknownMembers: EnumBooleanBodyType['hasUnknownMembers'],
547
+ readonly explicitType: EnumBooleanBodyType['explicitType'],
548
+ readonly hasUnknownMembers: EnumBooleanBodyType['hasUnknownMembers'],
509
549
  };
510
550
 
511
551
  export type EnumBooleanMemberProps = {
512
- +id: MaybeDetachedNode<EnumBooleanMemberType['id']>,
513
- +init: MaybeDetachedNode<EnumBooleanMemberType['init']>,
552
+ readonly id: MaybeDetachedNode<EnumBooleanMemberType['id']>,
553
+ readonly init: MaybeDetachedNode<EnumBooleanMemberType['init']>,
514
554
  };
515
555
 
516
556
  export type EnumDeclarationProps = {
517
- +id: MaybeDetachedNode<EnumDeclarationType['id']>,
518
- +body: MaybeDetachedNode<EnumDeclarationType['body']>,
557
+ readonly id: MaybeDetachedNode<EnumDeclarationType['id']>,
558
+ readonly body: MaybeDetachedNode<EnumDeclarationType['body']>,
519
559
  };
520
560
 
521
561
  export type EnumDefaultedMemberProps = {
522
- +id: MaybeDetachedNode<EnumDefaultedMemberType['id']>,
562
+ readonly id: MaybeDetachedNode<EnumDefaultedMemberType['id']>,
523
563
  };
524
564
 
525
565
  export type EnumNumberBodyProps = {
526
- +members: $ReadOnlyArray<
566
+ readonly members: ReadonlyArray<
527
567
  MaybeDetachedNode<EnumNumberBodyType['members'][number]>,
528
568
  >,
529
- +explicitType: EnumNumberBodyType['explicitType'],
530
- +hasUnknownMembers: EnumNumberBodyType['hasUnknownMembers'],
569
+ readonly explicitType: EnumNumberBodyType['explicitType'],
570
+ readonly hasUnknownMembers: EnumNumberBodyType['hasUnknownMembers'],
531
571
  };
532
572
 
533
573
  export type EnumNumberMemberProps = {
534
- +id: MaybeDetachedNode<EnumNumberMemberType['id']>,
535
- +init: MaybeDetachedNode<EnumNumberMemberType['init']>,
574
+ readonly id: MaybeDetachedNode<EnumNumberMemberType['id']>,
575
+ readonly init: MaybeDetachedNode<EnumNumberMemberType['init']>,
536
576
  };
537
577
 
538
578
  export type EnumStringBodyProps = {
539
- +members: $ReadOnlyArray<
579
+ readonly members: ReadonlyArray<
540
580
  MaybeDetachedNode<EnumStringBodyType['members'][number]>,
541
581
  >,
542
- +explicitType: EnumStringBodyType['explicitType'],
543
- +hasUnknownMembers: EnumStringBodyType['hasUnknownMembers'],
582
+ readonly explicitType: EnumStringBodyType['explicitType'],
583
+ readonly hasUnknownMembers: EnumStringBodyType['hasUnknownMembers'],
544
584
  };
545
585
 
546
586
  export type EnumStringMemberProps = {
547
- +id: MaybeDetachedNode<EnumStringMemberType['id']>,
548
- +init: MaybeDetachedNode<EnumStringMemberType['init']>,
587
+ readonly id: MaybeDetachedNode<EnumStringMemberType['id']>,
588
+ readonly init: MaybeDetachedNode<EnumStringMemberType['init']>,
549
589
  };
550
590
 
551
591
  export type EnumSymbolBodyProps = {
552
- +members: $ReadOnlyArray<
592
+ readonly members: ReadonlyArray<
553
593
  MaybeDetachedNode<EnumSymbolBodyType['members'][number]>,
554
594
  >,
555
- +hasUnknownMembers: EnumSymbolBodyType['hasUnknownMembers'],
595
+ readonly hasUnknownMembers: EnumSymbolBodyType['hasUnknownMembers'],
556
596
  };
557
597
 
558
598
  export type ExistsTypeAnnotationProps = {};
559
599
 
560
600
  export type ExportAllDeclarationProps = {
561
- +exported?: ?MaybeDetachedNode<ExportAllDeclarationType['exported']>,
562
- +source: MaybeDetachedNode<ExportAllDeclarationType['source']>,
563
- +exportKind: ExportAllDeclarationType['exportKind'],
601
+ readonly exported?: ?MaybeDetachedNode<ExportAllDeclarationType['exported']>,
602
+ readonly source: MaybeDetachedNode<ExportAllDeclarationType['source']>,
603
+ readonly exportKind: ExportAllDeclarationType['exportKind'],
564
604
  };
565
605
 
566
606
  export type ExportDefaultDeclarationProps = {
567
- +declaration: MaybeDetachedNode<ExportDefaultDeclarationType['declaration']>,
607
+ readonly declaration: MaybeDetachedNode<
608
+ ExportDefaultDeclarationType['declaration'],
609
+ >,
568
610
  };
569
611
 
570
612
  export type ExportSpecifierProps = {
571
- +exported: MaybeDetachedNode<ExportSpecifierType['exported']>,
572
- +local: MaybeDetachedNode<ExportSpecifierType['local']>,
613
+ readonly exported: MaybeDetachedNode<ExportSpecifierType['exported']>,
614
+ readonly local: MaybeDetachedNode<ExportSpecifierType['local']>,
573
615
  };
574
616
 
575
617
  export type ExpressionStatementProps = {
576
- +expression: MaybeDetachedNode<ExpressionStatementType['expression']>,
577
- +directive?: ?ExpressionStatementType['directive'],
618
+ readonly expression: MaybeDetachedNode<ExpressionStatementType['expression']>,
619
+ readonly directive?: ?ExpressionStatementType['directive'],
578
620
  };
579
621
 
580
622
  export type ForInStatementProps = {
581
- +left: MaybeDetachedNode<ForInStatementType['left']>,
582
- +right: MaybeDetachedNode<ForInStatementType['right']>,
583
- +body: MaybeDetachedNode<ForInStatementType['body']>,
623
+ readonly left: MaybeDetachedNode<ForInStatementType['left']>,
624
+ readonly right: MaybeDetachedNode<ForInStatementType['right']>,
625
+ readonly body: MaybeDetachedNode<ForInStatementType['body']>,
584
626
  };
585
627
 
586
628
  export type ForOfStatementProps = {
587
- +left: MaybeDetachedNode<ForOfStatementType['left']>,
588
- +right: MaybeDetachedNode<ForOfStatementType['right']>,
589
- +body: MaybeDetachedNode<ForOfStatementType['body']>,
590
- +await: ForOfStatementType['await'],
629
+ readonly left: MaybeDetachedNode<ForOfStatementType['left']>,
630
+ readonly right: MaybeDetachedNode<ForOfStatementType['right']>,
631
+ readonly body: MaybeDetachedNode<ForOfStatementType['body']>,
632
+ readonly await: ForOfStatementType['await'],
591
633
  };
592
634
 
593
635
  export type ForStatementProps = {
594
- +init?: ?MaybeDetachedNode<ForStatementType['init']>,
595
- +test?: ?MaybeDetachedNode<ForStatementType['test']>,
596
- +update?: ?MaybeDetachedNode<ForStatementType['update']>,
597
- +body: MaybeDetachedNode<ForStatementType['body']>,
636
+ readonly init?: ?MaybeDetachedNode<ForStatementType['init']>,
637
+ readonly test?: ?MaybeDetachedNode<ForStatementType['test']>,
638
+ readonly update?: ?MaybeDetachedNode<ForStatementType['update']>,
639
+ readonly body: MaybeDetachedNode<ForStatementType['body']>,
598
640
  };
599
641
 
600
642
  export type FunctionDeclarationProps = {
601
- +id?: ?MaybeDetachedNode<FunctionDeclarationType['id']>,
602
- +params: $ReadOnlyArray<
643
+ readonly id?: ?MaybeDetachedNode<FunctionDeclarationType['id']>,
644
+ readonly params: ReadonlyArray<
603
645
  MaybeDetachedNode<FunctionDeclarationType['params'][number]>,
604
646
  >,
605
- +body: MaybeDetachedNode<FunctionDeclarationType['body']>,
606
- +typeParameters?: ?MaybeDetachedNode<
647
+ readonly body: MaybeDetachedNode<FunctionDeclarationType['body']>,
648
+ readonly typeParameters?: ?MaybeDetachedNode<
607
649
  FunctionDeclarationType['typeParameters'],
608
650
  >,
609
- +returnType?: ?MaybeDetachedNode<FunctionDeclarationType['returnType']>,
610
- +predicate?: ?MaybeDetachedNode<FunctionDeclarationType['predicate']>,
611
- +generator: FunctionDeclarationType['generator'],
612
- +async: FunctionDeclarationType['async'],
651
+ readonly returnType?: ?MaybeDetachedNode<
652
+ FunctionDeclarationType['returnType'],
653
+ >,
654
+ readonly predicate?: ?MaybeDetachedNode<FunctionDeclarationType['predicate']>,
655
+ readonly generator: FunctionDeclarationType['generator'],
656
+ readonly async: FunctionDeclarationType['async'],
613
657
  };
614
658
 
615
659
  export type FunctionExpressionProps = {
616
- +id?: ?MaybeDetachedNode<FunctionExpressionType['id']>,
617
- +params: $ReadOnlyArray<
660
+ readonly id?: ?MaybeDetachedNode<FunctionExpressionType['id']>,
661
+ readonly params: ReadonlyArray<
618
662
  MaybeDetachedNode<FunctionExpressionType['params'][number]>,
619
663
  >,
620
- +body: MaybeDetachedNode<FunctionExpressionType['body']>,
621
- +typeParameters?: ?MaybeDetachedNode<
664
+ readonly body: MaybeDetachedNode<FunctionExpressionType['body']>,
665
+ readonly typeParameters?: ?MaybeDetachedNode<
622
666
  FunctionExpressionType['typeParameters'],
623
667
  >,
624
- +returnType?: ?MaybeDetachedNode<FunctionExpressionType['returnType']>,
625
- +predicate?: ?MaybeDetachedNode<FunctionExpressionType['predicate']>,
626
- +generator: FunctionExpressionType['generator'],
627
- +async: FunctionExpressionType['async'],
668
+ readonly returnType?: ?MaybeDetachedNode<
669
+ FunctionExpressionType['returnType'],
670
+ >,
671
+ readonly predicate?: ?MaybeDetachedNode<FunctionExpressionType['predicate']>,
672
+ readonly generator: FunctionExpressionType['generator'],
673
+ readonly async: FunctionExpressionType['async'],
628
674
  };
629
675
 
630
676
  export type FunctionTypeAnnotationProps = {
631
- +params: $ReadOnlyArray<
677
+ readonly params: ReadonlyArray<
632
678
  MaybeDetachedNode<FunctionTypeAnnotationType['params'][number]>,
633
679
  >,
634
- +this?: ?MaybeDetachedNode<FunctionTypeAnnotationType['this']>,
635
- +returnType: MaybeDetachedNode<FunctionTypeAnnotationType['returnType']>,
636
- +rest?: ?MaybeDetachedNode<FunctionTypeAnnotationType['rest']>,
637
- +typeParameters?: ?MaybeDetachedNode<
680
+ readonly this?: ?MaybeDetachedNode<FunctionTypeAnnotationType['this']>,
681
+ readonly returnType: MaybeDetachedNode<
682
+ FunctionTypeAnnotationType['returnType'],
683
+ >,
684
+ readonly rest?: ?MaybeDetachedNode<FunctionTypeAnnotationType['rest']>,
685
+ readonly typeParameters?: ?MaybeDetachedNode<
638
686
  FunctionTypeAnnotationType['typeParameters'],
639
687
  >,
640
688
  };
641
689
 
642
690
  export type FunctionTypeParamProps = {
643
- +name?: ?MaybeDetachedNode<FunctionTypeParamType['name']>,
644
- +typeAnnotation: MaybeDetachedNode<FunctionTypeParamType['typeAnnotation']>,
645
- +optional: FunctionTypeParamType['optional'],
691
+ readonly name?: ?MaybeDetachedNode<FunctionTypeParamType['name']>,
692
+ readonly typeAnnotation: MaybeDetachedNode<
693
+ FunctionTypeParamType['typeAnnotation'],
694
+ >,
695
+ readonly optional: FunctionTypeParamType['optional'],
646
696
  };
647
697
 
648
698
  export type GenericTypeAnnotationProps = {
649
- +id: MaybeDetachedNode<GenericTypeAnnotationType['id']>,
650
- +typeParameters?: ?MaybeDetachedNode<
699
+ readonly id: MaybeDetachedNode<GenericTypeAnnotationType['id']>,
700
+ readonly typeParameters?: ?MaybeDetachedNode<
651
701
  GenericTypeAnnotationType['typeParameters'],
652
702
  >,
653
703
  };
654
704
 
655
705
  export type HookDeclarationProps = {
656
- +id: MaybeDetachedNode<HookDeclarationType['id']>,
657
- +params: $ReadOnlyArray<
706
+ readonly id: MaybeDetachedNode<HookDeclarationType['id']>,
707
+ readonly params: ReadonlyArray<
658
708
  MaybeDetachedNode<HookDeclarationType['params'][number]>,
659
709
  >,
660
- +body: MaybeDetachedNode<HookDeclarationType['body']>,
661
- +typeParameters?: ?MaybeDetachedNode<HookDeclarationType['typeParameters']>,
662
- +returnType?: ?MaybeDetachedNode<HookDeclarationType['returnType']>,
663
- +async: HookDeclarationType['async'],
710
+ readonly body: MaybeDetachedNode<HookDeclarationType['body']>,
711
+ readonly typeParameters?: ?MaybeDetachedNode<
712
+ HookDeclarationType['typeParameters'],
713
+ >,
714
+ readonly returnType?: ?MaybeDetachedNode<HookDeclarationType['returnType']>,
715
+ readonly async: HookDeclarationType['async'],
664
716
  };
665
717
 
666
718
  export type HookTypeAnnotationProps = {
667
- +params: $ReadOnlyArray<
719
+ readonly params: ReadonlyArray<
668
720
  MaybeDetachedNode<HookTypeAnnotationType['params'][number]>,
669
721
  >,
670
- +returnType: MaybeDetachedNode<HookTypeAnnotationType['returnType']>,
671
- +rest?: ?MaybeDetachedNode<HookTypeAnnotationType['rest']>,
672
- +typeParameters?: ?MaybeDetachedNode<
722
+ readonly returnType: MaybeDetachedNode<HookTypeAnnotationType['returnType']>,
723
+ readonly rest?: ?MaybeDetachedNode<HookTypeAnnotationType['rest']>,
724
+ readonly typeParameters?: ?MaybeDetachedNode<
673
725
  HookTypeAnnotationType['typeParameters'],
674
726
  >,
675
727
  };
676
728
 
677
729
  export type IfStatementProps = {
678
- +test: MaybeDetachedNode<IfStatementType['test']>,
679
- +consequent: MaybeDetachedNode<IfStatementType['consequent']>,
680
- +alternate?: ?MaybeDetachedNode<IfStatementType['alternate']>,
730
+ readonly test: MaybeDetachedNode<IfStatementType['test']>,
731
+ readonly consequent: MaybeDetachedNode<IfStatementType['consequent']>,
732
+ readonly alternate?: ?MaybeDetachedNode<IfStatementType['alternate']>,
681
733
  };
682
734
 
683
735
  export type ImportAttributeProps = {
684
- +key: MaybeDetachedNode<ImportAttributeType['key']>,
685
- +value: MaybeDetachedNode<ImportAttributeType['value']>,
736
+ readonly key: MaybeDetachedNode<ImportAttributeType['key']>,
737
+ readonly value: MaybeDetachedNode<ImportAttributeType['value']>,
686
738
  };
687
739
 
688
740
  export type ImportDeclarationProps = {
689
- +specifiers: $ReadOnlyArray<
741
+ readonly specifiers: ReadonlyArray<
690
742
  MaybeDetachedNode<ImportDeclarationType['specifiers'][number]>,
691
743
  >,
692
- +source: MaybeDetachedNode<ImportDeclarationType['source']>,
693
- +attributes?: ?$ReadOnlyArray<
744
+ readonly source: MaybeDetachedNode<ImportDeclarationType['source']>,
745
+ readonly attributes?: ?ReadonlyArray<
694
746
  MaybeDetachedNode<ImportDeclarationType['attributes'][number]>,
695
747
  >,
696
- +importKind: ImportDeclarationType['importKind'],
748
+ readonly importKind: ImportDeclarationType['importKind'],
697
749
  };
698
750
 
699
751
  export type ImportDefaultSpecifierProps = {
700
- +local: MaybeDetachedNode<ImportDefaultSpecifierType['local']>,
752
+ readonly local: MaybeDetachedNode<ImportDefaultSpecifierType['local']>,
701
753
  };
702
754
 
703
755
  export type ImportExpressionProps = {
704
- +source: MaybeDetachedNode<ImportExpressionType['source']>,
705
- +options?: ?MaybeDetachedNode<ImportExpressionType['options']>,
756
+ readonly source: MaybeDetachedNode<ImportExpressionType['source']>,
757
+ readonly options?: ?MaybeDetachedNode<ImportExpressionType['options']>,
706
758
  };
707
759
 
708
760
  export type ImportNamespaceSpecifierProps = {
709
- +local: MaybeDetachedNode<ImportNamespaceSpecifierType['local']>,
761
+ readonly local: MaybeDetachedNode<ImportNamespaceSpecifierType['local']>,
710
762
  };
711
763
 
712
764
  export type ImportSpecifierProps = {
713
- +imported: MaybeDetachedNode<ImportSpecifierType['imported']>,
714
- +local: MaybeDetachedNode<ImportSpecifierType['local']>,
715
- +importKind: ImportSpecifierType['importKind'],
765
+ readonly imported: MaybeDetachedNode<ImportSpecifierType['imported']>,
766
+ readonly local: MaybeDetachedNode<ImportSpecifierType['local']>,
767
+ readonly importKind: ImportSpecifierType['importKind'],
716
768
  };
717
769
 
718
770
  export type IndexedAccessTypeProps = {
719
- +objectType: MaybeDetachedNode<IndexedAccessTypeType['objectType']>,
720
- +indexType: MaybeDetachedNode<IndexedAccessTypeType['indexType']>,
771
+ readonly objectType: MaybeDetachedNode<IndexedAccessTypeType['objectType']>,
772
+ readonly indexType: MaybeDetachedNode<IndexedAccessTypeType['indexType']>,
721
773
  };
722
774
 
723
775
  export type InferredPredicateProps = {};
724
776
 
725
777
  export type InferTypeAnnotationProps = {
726
- +typeParameter: MaybeDetachedNode<InferTypeAnnotationType['typeParameter']>,
778
+ readonly typeParameter: MaybeDetachedNode<
779
+ InferTypeAnnotationType['typeParameter'],
780
+ >,
727
781
  };
728
782
 
729
783
  export type InterfaceDeclarationProps = {
730
- +id: MaybeDetachedNode<InterfaceDeclarationType['id']>,
731
- +typeParameters?: ?MaybeDetachedNode<
784
+ readonly id: MaybeDetachedNode<InterfaceDeclarationType['id']>,
785
+ readonly typeParameters?: ?MaybeDetachedNode<
732
786
  InterfaceDeclarationType['typeParameters'],
733
787
  >,
734
- +extends: $ReadOnlyArray<
788
+ readonly extends: ReadonlyArray<
735
789
  MaybeDetachedNode<InterfaceDeclarationType['extends'][number]>,
736
790
  >,
737
- +body: MaybeDetachedNode<InterfaceDeclarationType['body']>,
791
+ readonly body: MaybeDetachedNode<InterfaceDeclarationType['body']>,
738
792
  };
739
793
 
740
794
  export type InterfaceExtendsProps = {
741
- +id: MaybeDetachedNode<InterfaceExtendsType['id']>,
742
- +typeParameters?: ?MaybeDetachedNode<InterfaceExtendsType['typeParameters']>,
795
+ readonly id: MaybeDetachedNode<InterfaceExtendsType['id']>,
796
+ readonly typeParameters?: ?MaybeDetachedNode<
797
+ InterfaceExtendsType['typeParameters'],
798
+ >,
743
799
  };
744
800
 
745
801
  export type InterfaceTypeAnnotationProps = {
746
- +extends: $ReadOnlyArray<
802
+ readonly extends: ReadonlyArray<
747
803
  MaybeDetachedNode<InterfaceTypeAnnotationType['extends'][number]>,
748
804
  >,
749
- +body?: ?MaybeDetachedNode<InterfaceTypeAnnotationType['body']>,
805
+ readonly body?: ?MaybeDetachedNode<InterfaceTypeAnnotationType['body']>,
750
806
  };
751
807
 
752
808
  export type IntersectionTypeAnnotationProps = {
753
- +types: $ReadOnlyArray<
809
+ readonly types: ReadonlyArray<
754
810
  MaybeDetachedNode<IntersectionTypeAnnotationType['types'][number]>,
755
811
  >,
756
812
  };
757
813
 
758
814
  export type JSXAttributeProps = {
759
- +name: MaybeDetachedNode<JSXAttributeType['name']>,
760
- +value?: ?MaybeDetachedNode<JSXAttributeType['value']>,
815
+ readonly name: MaybeDetachedNode<JSXAttributeType['name']>,
816
+ readonly value?: ?MaybeDetachedNode<JSXAttributeType['value']>,
761
817
  };
762
818
 
763
819
  export type JSXClosingElementProps = {
764
- +name: MaybeDetachedNode<JSXClosingElementType['name']>,
820
+ readonly name: MaybeDetachedNode<JSXClosingElementType['name']>,
765
821
  };
766
822
 
767
823
  export type JSXClosingFragmentProps = {};
768
824
 
769
825
  export type JSXElementProps = {
770
- +openingElement: MaybeDetachedNode<JSXElementType['openingElement']>,
771
- +children: $ReadOnlyArray<
826
+ readonly openingElement: MaybeDetachedNode<JSXElementType['openingElement']>,
827
+ readonly children: ReadonlyArray<
772
828
  MaybeDetachedNode<JSXElementType['children'][number]>,
773
829
  >,
774
- +closingElement?: ?MaybeDetachedNode<JSXElementType['closingElement']>,
830
+ readonly closingElement?: ?MaybeDetachedNode<
831
+ JSXElementType['closingElement'],
832
+ >,
775
833
  };
776
834
 
777
835
  export type JSXEmptyExpressionProps = {};
778
836
 
779
837
  export type JSXExpressionContainerProps = {
780
- +expression: MaybeDetachedNode<JSXExpressionContainerType['expression']>,
838
+ readonly expression: MaybeDetachedNode<
839
+ JSXExpressionContainerType['expression'],
840
+ >,
781
841
  };
782
842
 
783
843
  export type JSXFragmentProps = {
784
- +openingFragment: MaybeDetachedNode<JSXFragmentType['openingFragment']>,
785
- +children: $ReadOnlyArray<
844
+ readonly openingFragment: MaybeDetachedNode<
845
+ JSXFragmentType['openingFragment'],
846
+ >,
847
+ readonly children: ReadonlyArray<
786
848
  MaybeDetachedNode<JSXFragmentType['children'][number]>,
787
849
  >,
788
- +closingFragment: MaybeDetachedNode<JSXFragmentType['closingFragment']>,
850
+ readonly closingFragment: MaybeDetachedNode<
851
+ JSXFragmentType['closingFragment'],
852
+ >,
789
853
  };
790
854
 
791
855
  export type JSXIdentifierProps = {
792
- +name: JSXIdentifierType['name'],
856
+ readonly name: JSXIdentifierType['name'],
793
857
  };
794
858
 
795
859
  export type JSXMemberExpressionProps = {
796
- +object: MaybeDetachedNode<JSXMemberExpressionType['object']>,
797
- +property: MaybeDetachedNode<JSXMemberExpressionType['property']>,
860
+ readonly object: MaybeDetachedNode<JSXMemberExpressionType['object']>,
861
+ readonly property: MaybeDetachedNode<JSXMemberExpressionType['property']>,
798
862
  };
799
863
 
800
864
  export type JSXNamespacedNameProps = {
801
- +namespace: MaybeDetachedNode<JSXNamespacedNameType['namespace']>,
802
- +name: MaybeDetachedNode<JSXNamespacedNameType['name']>,
865
+ readonly namespace: MaybeDetachedNode<JSXNamespacedNameType['namespace']>,
866
+ readonly name: MaybeDetachedNode<JSXNamespacedNameType['name']>,
803
867
  };
804
868
 
805
869
  export type JSXOpeningElementProps = {
806
- +name: MaybeDetachedNode<JSXOpeningElementType['name']>,
807
- +attributes: $ReadOnlyArray<
870
+ readonly name: MaybeDetachedNode<JSXOpeningElementType['name']>,
871
+ readonly attributes: ReadonlyArray<
808
872
  MaybeDetachedNode<JSXOpeningElementType['attributes'][number]>,
809
873
  >,
810
- +selfClosing: JSXOpeningElementType['selfClosing'],
811
- +typeArguments?: ?MaybeDetachedNode<JSXOpeningElementType['typeArguments']>,
874
+ readonly selfClosing: JSXOpeningElementType['selfClosing'],
875
+ readonly typeArguments?: ?MaybeDetachedNode<
876
+ JSXOpeningElementType['typeArguments'],
877
+ >,
812
878
  };
813
879
 
814
880
  export type JSXOpeningFragmentProps = {};
815
881
 
816
882
  export type JSXSpreadAttributeProps = {
817
- +argument: MaybeDetachedNode<JSXSpreadAttributeType['argument']>,
883
+ readonly argument: MaybeDetachedNode<JSXSpreadAttributeType['argument']>,
818
884
  };
819
885
 
820
886
  export type JSXSpreadChildProps = {
821
- +expression: MaybeDetachedNode<JSXSpreadChildType['expression']>,
887
+ readonly expression: MaybeDetachedNode<JSXSpreadChildType['expression']>,
822
888
  };
823
889
 
824
890
  export type JSXTextProps = {
825
- +value: JSXTextType['value'],
826
- +raw: JSXTextType['raw'],
891
+ readonly value: JSXTextType['value'],
892
+ readonly raw: JSXTextType['raw'],
827
893
  };
828
894
 
829
895
  export type KeyofTypeAnnotationProps = {
830
- +argument: MaybeDetachedNode<KeyofTypeAnnotationType['argument']>,
896
+ readonly argument: MaybeDetachedNode<KeyofTypeAnnotationType['argument']>,
831
897
  };
832
898
 
833
899
  export type LabeledStatementProps = {
834
- +label: MaybeDetachedNode<LabeledStatementType['label']>,
835
- +body: MaybeDetachedNode<LabeledStatementType['body']>,
900
+ readonly label: MaybeDetachedNode<LabeledStatementType['label']>,
901
+ readonly body: MaybeDetachedNode<LabeledStatementType['body']>,
836
902
  };
837
903
 
838
904
  export type LogicalExpressionProps = {
839
- +left: MaybeDetachedNode<LogicalExpressionType['left']>,
840
- +right: MaybeDetachedNode<LogicalExpressionType['right']>,
841
- +operator: LogicalExpressionType['operator'],
905
+ readonly left: MaybeDetachedNode<LogicalExpressionType['left']>,
906
+ readonly right: MaybeDetachedNode<LogicalExpressionType['right']>,
907
+ readonly operator: LogicalExpressionType['operator'],
842
908
  };
843
909
 
844
910
  export type MatchArrayPatternProps = {
845
- +elements: $ReadOnlyArray<
911
+ readonly elements: ReadonlyArray<
846
912
  MaybeDetachedNode<MatchArrayPatternType['elements'][number]>,
847
913
  >,
848
- +rest?: ?MaybeDetachedNode<MatchArrayPatternType['rest']>,
914
+ readonly rest?: ?MaybeDetachedNode<MatchArrayPatternType['rest']>,
849
915
  };
850
916
 
851
917
  export type MatchAsPatternProps = {
852
- +pattern: MaybeDetachedNode<MatchAsPatternType['pattern']>,
853
- +target: MaybeDetachedNode<MatchAsPatternType['target']>,
918
+ readonly pattern: MaybeDetachedNode<MatchAsPatternType['pattern']>,
919
+ readonly target: MaybeDetachedNode<MatchAsPatternType['target']>,
854
920
  };
855
921
 
856
922
  export type MatchBindingPatternProps = {
857
- +id: MaybeDetachedNode<MatchBindingPatternType['id']>,
858
- +kind: MatchBindingPatternType['kind'],
923
+ readonly id: MaybeDetachedNode<MatchBindingPatternType['id']>,
924
+ readonly kind: MatchBindingPatternType['kind'],
859
925
  };
860
926
 
861
927
  export type MatchExpressionProps = {
862
- +argument: MaybeDetachedNode<MatchExpressionType['argument']>,
863
- +cases: $ReadOnlyArray<
928
+ readonly argument: MaybeDetachedNode<MatchExpressionType['argument']>,
929
+ readonly cases: ReadonlyArray<
864
930
  MaybeDetachedNode<MatchExpressionType['cases'][number]>,
865
931
  >,
866
932
  };
867
933
 
868
934
  export type MatchExpressionCaseProps = {
869
- +pattern: MaybeDetachedNode<MatchExpressionCaseType['pattern']>,
870
- +body: MaybeDetachedNode<MatchExpressionCaseType['body']>,
871
- +guard?: ?MaybeDetachedNode<MatchExpressionCaseType['guard']>,
935
+ readonly pattern: MaybeDetachedNode<MatchExpressionCaseType['pattern']>,
936
+ readonly body: MaybeDetachedNode<MatchExpressionCaseType['body']>,
937
+ readonly guard?: ?MaybeDetachedNode<MatchExpressionCaseType['guard']>,
872
938
  };
873
939
 
874
940
  export type MatchIdentifierPatternProps = {
875
- +id: MaybeDetachedNode<MatchIdentifierPatternType['id']>,
941
+ readonly id: MaybeDetachedNode<MatchIdentifierPatternType['id']>,
876
942
  };
877
943
 
878
944
  export type MatchInstanceObjectPatternProps = {
879
- +properties: $ReadOnlyArray<
945
+ readonly properties: ReadonlyArray<
880
946
  MaybeDetachedNode<MatchInstanceObjectPatternType['properties'][number]>,
881
947
  >,
882
- +rest?: ?MaybeDetachedNode<MatchInstanceObjectPatternType['rest']>,
948
+ readonly rest?: ?MaybeDetachedNode<MatchInstanceObjectPatternType['rest']>,
883
949
  };
884
950
 
885
951
  export type MatchInstancePatternProps = {
886
- +targetConstructor: MaybeDetachedNode<
952
+ readonly targetConstructor: MaybeDetachedNode<
887
953
  MatchInstancePatternType['targetConstructor'],
888
954
  >,
889
- +properties: MaybeDetachedNode<MatchInstancePatternType['properties']>,
955
+ readonly properties: MaybeDetachedNode<
956
+ MatchInstancePatternType['properties'],
957
+ >,
890
958
  };
891
959
 
892
960
  export type MatchLiteralPatternProps = {
893
- +literal: MaybeDetachedNode<MatchLiteralPatternType['literal']>,
961
+ readonly literal: MaybeDetachedNode<MatchLiteralPatternType['literal']>,
894
962
  };
895
963
 
896
964
  export type MatchMemberPatternProps = {
897
- +base: MaybeDetachedNode<MatchMemberPatternType['base']>,
898
- +property: MaybeDetachedNode<MatchMemberPatternType['property']>,
965
+ readonly base: MaybeDetachedNode<MatchMemberPatternType['base']>,
966
+ readonly property: MaybeDetachedNode<MatchMemberPatternType['property']>,
899
967
  };
900
968
 
901
969
  export type MatchObjectPatternProps = {
902
- +properties: $ReadOnlyArray<
970
+ readonly properties: ReadonlyArray<
903
971
  MaybeDetachedNode<MatchObjectPatternType['properties'][number]>,
904
972
  >,
905
- +rest?: ?MaybeDetachedNode<MatchObjectPatternType['rest']>,
973
+ readonly rest?: ?MaybeDetachedNode<MatchObjectPatternType['rest']>,
906
974
  };
907
975
 
908
976
  export type MatchObjectPatternPropertyProps = {
909
- +key: MaybeDetachedNode<MatchObjectPatternPropertyType['key']>,
910
- +pattern: MaybeDetachedNode<MatchObjectPatternPropertyType['pattern']>,
911
- +shorthand: MatchObjectPatternPropertyType['shorthand'],
977
+ readonly key: MaybeDetachedNode<MatchObjectPatternPropertyType['key']>,
978
+ readonly pattern: MaybeDetachedNode<
979
+ MatchObjectPatternPropertyType['pattern'],
980
+ >,
981
+ readonly shorthand: MatchObjectPatternPropertyType['shorthand'],
912
982
  };
913
983
 
914
984
  export type MatchOrPatternProps = {
915
- +patterns: $ReadOnlyArray<
985
+ readonly patterns: ReadonlyArray<
916
986
  MaybeDetachedNode<MatchOrPatternType['patterns'][number]>,
917
987
  >,
918
988
  };
919
989
 
920
990
  export type MatchRestPatternProps = {
921
- +argument?: ?MaybeDetachedNode<MatchRestPatternType['argument']>,
991
+ readonly argument?: ?MaybeDetachedNode<MatchRestPatternType['argument']>,
922
992
  };
923
993
 
924
994
  export type MatchStatementProps = {
925
- +argument: MaybeDetachedNode<MatchStatementType['argument']>,
926
- +cases: $ReadOnlyArray<
995
+ readonly argument: MaybeDetachedNode<MatchStatementType['argument']>,
996
+ readonly cases: ReadonlyArray<
927
997
  MaybeDetachedNode<MatchStatementType['cases'][number]>,
928
998
  >,
929
999
  };
930
1000
 
931
1001
  export type MatchStatementCaseProps = {
932
- +pattern: MaybeDetachedNode<MatchStatementCaseType['pattern']>,
933
- +body: MaybeDetachedNode<MatchStatementCaseType['body']>,
934
- +guard?: ?MaybeDetachedNode<MatchStatementCaseType['guard']>,
1002
+ readonly pattern: MaybeDetachedNode<MatchStatementCaseType['pattern']>,
1003
+ readonly body: MaybeDetachedNode<MatchStatementCaseType['body']>,
1004
+ readonly guard?: ?MaybeDetachedNode<MatchStatementCaseType['guard']>,
935
1005
  };
936
1006
 
937
1007
  export type MatchUnaryPatternProps = {
938
- +argument: MaybeDetachedNode<MatchUnaryPatternType['argument']>,
939
- +operator: MatchUnaryPatternType['operator'],
1008
+ readonly argument: MaybeDetachedNode<MatchUnaryPatternType['argument']>,
1009
+ readonly operator: MatchUnaryPatternType['operator'],
940
1010
  };
941
1011
 
942
1012
  export type MatchWildcardPatternProps = {};
943
1013
 
944
1014
  export type MetaPropertyProps = {
945
- +meta: MaybeDetachedNode<MetaPropertyType['meta']>,
946
- +property: MaybeDetachedNode<MetaPropertyType['property']>,
1015
+ readonly meta: MaybeDetachedNode<MetaPropertyType['meta']>,
1016
+ readonly property: MaybeDetachedNode<MetaPropertyType['property']>,
947
1017
  };
948
1018
 
949
1019
  export type MethodDefinitionProps = {
950
- +key: MaybeDetachedNode<MethodDefinitionType['key']>,
951
- +value: MaybeDetachedNode<MethodDefinitionType['value']>,
952
- +kind: MethodDefinitionType['kind'],
953
- +computed: MethodDefinitionType['computed'],
954
- +static: MethodDefinitionType['static'],
955
- +decorators: $ReadOnlyArray<
1020
+ readonly key: MaybeDetachedNode<MethodDefinitionType['key']>,
1021
+ readonly value: MaybeDetachedNode<MethodDefinitionType['value']>,
1022
+ readonly kind: MethodDefinitionType['kind'],
1023
+ readonly computed: MethodDefinitionType['computed'],
1024
+ readonly static: MethodDefinitionType['static'],
1025
+ readonly decorators: ReadonlyArray<
956
1026
  MaybeDetachedNode<MethodDefinitionType['decorators'][number]>,
957
1027
  >,
958
1028
  };
@@ -962,15 +1032,17 @@ export type MixedTypeAnnotationProps = {};
962
1032
  export type NeverTypeAnnotationProps = {};
963
1033
 
964
1034
  export type NewExpressionProps = {
965
- +callee: MaybeDetachedNode<NewExpressionType['callee']>,
966
- +typeArguments?: ?MaybeDetachedNode<NewExpressionType['typeArguments']>,
967
- +arguments: $ReadOnlyArray<
1035
+ readonly callee: MaybeDetachedNode<NewExpressionType['callee']>,
1036
+ readonly typeArguments?: ?MaybeDetachedNode<
1037
+ NewExpressionType['typeArguments'],
1038
+ >,
1039
+ readonly arguments: ReadonlyArray<
968
1040
  MaybeDetachedNode<NewExpressionType['arguments'][number]>,
969
1041
  >,
970
1042
  };
971
1043
 
972
1044
  export type NullableTypeAnnotationProps = {
973
- +typeAnnotation: MaybeDetachedNode<
1045
+ readonly typeAnnotation: MaybeDetachedNode<
974
1046
  NullableTypeAnnotationType['typeAnnotation'],
975
1047
  >,
976
1048
  };
@@ -978,214 +1050,238 @@ export type NullableTypeAnnotationProps = {
978
1050
  export type NullLiteralTypeAnnotationProps = {};
979
1051
 
980
1052
  export type NumberLiteralTypeAnnotationProps = {
981
- +value: NumberLiteralTypeAnnotationType['value'],
982
- +raw: NumberLiteralTypeAnnotationType['raw'],
1053
+ readonly value: NumberLiteralTypeAnnotationType['value'],
1054
+ readonly raw: NumberLiteralTypeAnnotationType['raw'],
983
1055
  };
984
1056
 
985
1057
  export type NumberTypeAnnotationProps = {};
986
1058
 
987
1059
  export type ObjectExpressionProps = {
988
- +properties: $ReadOnlyArray<
1060
+ readonly properties: ReadonlyArray<
989
1061
  MaybeDetachedNode<ObjectExpressionType['properties'][number]>,
990
1062
  >,
991
1063
  };
992
1064
 
993
1065
  export type ObjectPatternProps = {
994
- +properties: $ReadOnlyArray<
1066
+ readonly properties: ReadonlyArray<
995
1067
  MaybeDetachedNode<ObjectPatternType['properties'][number]>,
996
1068
  >,
997
- +typeAnnotation?: ?MaybeDetachedNode<ObjectPatternType['typeAnnotation']>,
1069
+ readonly typeAnnotation?: ?MaybeDetachedNode<
1070
+ ObjectPatternType['typeAnnotation'],
1071
+ >,
998
1072
  };
999
1073
 
1000
1074
  export type ObjectTypeAnnotationProps = {
1001
- +properties: $ReadOnlyArray<
1075
+ readonly properties: ReadonlyArray<
1002
1076
  MaybeDetachedNode<ObjectTypeAnnotationType['properties'][number]>,
1003
1077
  >,
1004
- +indexers: $ReadOnlyArray<
1078
+ readonly indexers: ReadonlyArray<
1005
1079
  MaybeDetachedNode<ObjectTypeAnnotationType['indexers'][number]>,
1006
1080
  >,
1007
- +callProperties: $ReadOnlyArray<
1081
+ readonly callProperties: ReadonlyArray<
1008
1082
  MaybeDetachedNode<ObjectTypeAnnotationType['callProperties'][number]>,
1009
1083
  >,
1010
- +internalSlots: $ReadOnlyArray<
1084
+ readonly internalSlots: ReadonlyArray<
1011
1085
  MaybeDetachedNode<ObjectTypeAnnotationType['internalSlots'][number]>,
1012
1086
  >,
1013
- +inexact: ObjectTypeAnnotationType['inexact'],
1014
- +exact: ObjectTypeAnnotationType['exact'],
1087
+ readonly inexact: ObjectTypeAnnotationType['inexact'],
1088
+ readonly exact: ObjectTypeAnnotationType['exact'],
1015
1089
  };
1016
1090
 
1017
1091
  export type ObjectTypeCallPropertyProps = {
1018
- +value: MaybeDetachedNode<ObjectTypeCallPropertyType['value']>,
1019
- +static: ObjectTypeCallPropertyType['static'],
1092
+ readonly value: MaybeDetachedNode<ObjectTypeCallPropertyType['value']>,
1093
+ readonly static: ObjectTypeCallPropertyType['static'],
1020
1094
  };
1021
1095
 
1022
1096
  export type ObjectTypeIndexerProps = {
1023
- +id?: ?MaybeDetachedNode<ObjectTypeIndexerType['id']>,
1024
- +key: MaybeDetachedNode<ObjectTypeIndexerType['key']>,
1025
- +value: MaybeDetachedNode<ObjectTypeIndexerType['value']>,
1026
- +static: ObjectTypeIndexerType['static'],
1027
- +variance?: ?MaybeDetachedNode<ObjectTypeIndexerType['variance']>,
1097
+ readonly id?: ?MaybeDetachedNode<ObjectTypeIndexerType['id']>,
1098
+ readonly key: MaybeDetachedNode<ObjectTypeIndexerType['key']>,
1099
+ readonly value: MaybeDetachedNode<ObjectTypeIndexerType['value']>,
1100
+ readonly static: ObjectTypeIndexerType['static'],
1101
+ readonly variance?: ?MaybeDetachedNode<ObjectTypeIndexerType['variance']>,
1028
1102
  };
1029
1103
 
1030
1104
  export type ObjectTypeInternalSlotProps = {
1031
- +id: MaybeDetachedNode<ObjectTypeInternalSlotType['id']>,
1032
- +value: MaybeDetachedNode<ObjectTypeInternalSlotType['value']>,
1033
- +optional: ObjectTypeInternalSlotType['optional'],
1034
- +static: ObjectTypeInternalSlotType['static'],
1035
- +method: ObjectTypeInternalSlotType['method'],
1105
+ readonly id: MaybeDetachedNode<ObjectTypeInternalSlotType['id']>,
1106
+ readonly value: MaybeDetachedNode<ObjectTypeInternalSlotType['value']>,
1107
+ readonly optional: ObjectTypeInternalSlotType['optional'],
1108
+ readonly static: ObjectTypeInternalSlotType['static'],
1109
+ readonly method: ObjectTypeInternalSlotType['method'],
1036
1110
  };
1037
1111
 
1038
1112
  export type ObjectTypeMappedTypePropertyProps = {
1039
- +keyTparam: MaybeDetachedNode<ObjectTypeMappedTypePropertyType['keyTparam']>,
1040
- +propType: MaybeDetachedNode<ObjectTypeMappedTypePropertyType['propType']>,
1041
- +sourceType: MaybeDetachedNode<
1113
+ readonly keyTparam: MaybeDetachedNode<
1114
+ ObjectTypeMappedTypePropertyType['keyTparam'],
1115
+ >,
1116
+ readonly propType: MaybeDetachedNode<
1117
+ ObjectTypeMappedTypePropertyType['propType'],
1118
+ >,
1119
+ readonly sourceType: MaybeDetachedNode<
1042
1120
  ObjectTypeMappedTypePropertyType['sourceType'],
1043
1121
  >,
1044
- +variance?: ?MaybeDetachedNode<ObjectTypeMappedTypePropertyType['variance']>,
1045
- +optional?: ?ObjectTypeMappedTypePropertyType['optional'],
1122
+ readonly variance?: ?MaybeDetachedNode<
1123
+ ObjectTypeMappedTypePropertyType['variance'],
1124
+ >,
1125
+ readonly optional?: ?ObjectTypeMappedTypePropertyType['optional'],
1046
1126
  };
1047
1127
 
1048
1128
  export type ObjectTypeSpreadPropertyProps = {
1049
- +argument: MaybeDetachedNode<ObjectTypeSpreadPropertyType['argument']>,
1129
+ readonly argument: MaybeDetachedNode<
1130
+ ObjectTypeSpreadPropertyType['argument'],
1131
+ >,
1050
1132
  };
1051
1133
 
1052
1134
  export type OpaqueTypeProps = {
1053
- +id: MaybeDetachedNode<OpaqueTypeType['id']>,
1054
- +typeParameters?: ?MaybeDetachedNode<OpaqueTypeType['typeParameters']>,
1055
- +impltype: MaybeDetachedNode<OpaqueTypeType['impltype']>,
1056
- +lowerBound?: ?MaybeDetachedNode<OpaqueTypeType['lowerBound']>,
1057
- +upperBound?: ?MaybeDetachedNode<OpaqueTypeType['upperBound']>,
1058
- +supertype?: ?MaybeDetachedNode<OpaqueTypeType['supertype']>,
1135
+ readonly id: MaybeDetachedNode<OpaqueTypeType['id']>,
1136
+ readonly typeParameters?: ?MaybeDetachedNode<
1137
+ OpaqueTypeType['typeParameters'],
1138
+ >,
1139
+ readonly impltype: MaybeDetachedNode<OpaqueTypeType['impltype']>,
1140
+ readonly lowerBound?: ?MaybeDetachedNode<OpaqueTypeType['lowerBound']>,
1141
+ readonly upperBound?: ?MaybeDetachedNode<OpaqueTypeType['upperBound']>,
1142
+ readonly supertype?: ?MaybeDetachedNode<OpaqueTypeType['supertype']>,
1059
1143
  };
1060
1144
 
1061
1145
  export type OptionalIndexedAccessTypeProps = {
1062
- +objectType: MaybeDetachedNode<OptionalIndexedAccessTypeType['objectType']>,
1063
- +indexType: MaybeDetachedNode<OptionalIndexedAccessTypeType['indexType']>,
1064
- +optional: OptionalIndexedAccessTypeType['optional'],
1146
+ readonly objectType: MaybeDetachedNode<
1147
+ OptionalIndexedAccessTypeType['objectType'],
1148
+ >,
1149
+ readonly indexType: MaybeDetachedNode<
1150
+ OptionalIndexedAccessTypeType['indexType'],
1151
+ >,
1152
+ readonly optional: OptionalIndexedAccessTypeType['optional'],
1065
1153
  };
1066
1154
 
1067
1155
  export type PrivateIdentifierProps = {
1068
- +name: PrivateIdentifierType['name'],
1156
+ readonly name: PrivateIdentifierType['name'],
1069
1157
  };
1070
1158
 
1071
1159
  export type PropertyProps = {
1072
- +key: MaybeDetachedNode<PropertyType['key']>,
1073
- +value: MaybeDetachedNode<PropertyType['value']>,
1074
- +kind: PropertyType['kind'],
1075
- +computed: PropertyType['computed'],
1076
- +method: PropertyType['method'],
1077
- +shorthand: PropertyType['shorthand'],
1160
+ readonly key: MaybeDetachedNode<PropertyType['key']>,
1161
+ readonly value: MaybeDetachedNode<PropertyType['value']>,
1162
+ readonly kind: PropertyType['kind'],
1163
+ readonly computed: PropertyType['computed'],
1164
+ readonly method: PropertyType['method'],
1165
+ readonly shorthand: PropertyType['shorthand'],
1078
1166
  };
1079
1167
 
1080
1168
  export type PropertyDefinitionProps = {
1081
- +key: MaybeDetachedNode<PropertyDefinitionType['key']>,
1082
- +value?: ?MaybeDetachedNode<PropertyDefinitionType['value']>,
1083
- +computed: PropertyDefinitionType['computed'],
1084
- +static: PropertyDefinitionType['static'],
1085
- +decorators: $ReadOnlyArray<
1169
+ readonly key: MaybeDetachedNode<PropertyDefinitionType['key']>,
1170
+ readonly value?: ?MaybeDetachedNode<PropertyDefinitionType['value']>,
1171
+ readonly computed: PropertyDefinitionType['computed'],
1172
+ readonly static: PropertyDefinitionType['static'],
1173
+ readonly decorators: ReadonlyArray<
1086
1174
  MaybeDetachedNode<PropertyDefinitionType['decorators'][number]>,
1087
1175
  >,
1088
- +declare: PropertyDefinitionType['declare'],
1089
- +optional: PropertyDefinitionType['optional'],
1090
- +variance?: ?MaybeDetachedNode<PropertyDefinitionType['variance']>,
1091
- +typeAnnotation?: ?MaybeDetachedNode<
1176
+ readonly declare: PropertyDefinitionType['declare'],
1177
+ readonly optional: PropertyDefinitionType['optional'],
1178
+ readonly variance?: ?MaybeDetachedNode<PropertyDefinitionType['variance']>,
1179
+ readonly typeAnnotation?: ?MaybeDetachedNode<
1092
1180
  PropertyDefinitionType['typeAnnotation'],
1093
1181
  >,
1094
1182
  };
1095
1183
 
1096
1184
  export type QualifiedTypeIdentifierProps = {
1097
- +qualification: MaybeDetachedNode<
1185
+ readonly qualification: MaybeDetachedNode<
1098
1186
  QualifiedTypeIdentifierType['qualification'],
1099
1187
  >,
1100
- +id: MaybeDetachedNode<QualifiedTypeIdentifierType['id']>,
1188
+ readonly id: MaybeDetachedNode<QualifiedTypeIdentifierType['id']>,
1101
1189
  };
1102
1190
 
1103
1191
  export type QualifiedTypeofIdentifierProps = {
1104
- +qualification: MaybeDetachedNode<
1192
+ readonly qualification: MaybeDetachedNode<
1105
1193
  QualifiedTypeofIdentifierType['qualification'],
1106
1194
  >,
1107
- +id: MaybeDetachedNode<QualifiedTypeofIdentifierType['id']>,
1195
+ readonly id: MaybeDetachedNode<QualifiedTypeofIdentifierType['id']>,
1108
1196
  };
1109
1197
 
1110
1198
  export type RecordDeclarationProps = {
1111
- +id: MaybeDetachedNode<RecordDeclarationType['id']>,
1112
- +typeParameters?: ?MaybeDetachedNode<RecordDeclarationType['typeParameters']>,
1113
- +implements: $ReadOnlyArray<
1199
+ readonly id: MaybeDetachedNode<RecordDeclarationType['id']>,
1200
+ readonly typeParameters?: ?MaybeDetachedNode<
1201
+ RecordDeclarationType['typeParameters'],
1202
+ >,
1203
+ readonly implements: ReadonlyArray<
1114
1204
  MaybeDetachedNode<RecordDeclarationType['implements'][number]>,
1115
1205
  >,
1116
- +body: MaybeDetachedNode<RecordDeclarationType['body']>,
1206
+ readonly body: MaybeDetachedNode<RecordDeclarationType['body']>,
1117
1207
  };
1118
1208
 
1119
1209
  export type RecordDeclarationBodyProps = {
1120
- +elements: $ReadOnlyArray<
1210
+ readonly elements: ReadonlyArray<
1121
1211
  MaybeDetachedNode<RecordDeclarationBodyType['elements'][number]>,
1122
1212
  >,
1123
1213
  };
1124
1214
 
1125
1215
  export type RecordDeclarationImplementsProps = {
1126
- +id: MaybeDetachedNode<RecordDeclarationImplementsType['id']>,
1127
- +typeArguments?: ?MaybeDetachedNode<
1216
+ readonly id: MaybeDetachedNode<RecordDeclarationImplementsType['id']>,
1217
+ readonly typeArguments?: ?MaybeDetachedNode<
1128
1218
  RecordDeclarationImplementsType['typeArguments'],
1129
1219
  >,
1130
1220
  };
1131
1221
 
1132
1222
  export type RecordDeclarationPropertyProps = {
1133
- +key: MaybeDetachedNode<RecordDeclarationPropertyType['key']>,
1134
- +typeAnnotation: MaybeDetachedNode<
1223
+ readonly key: MaybeDetachedNode<RecordDeclarationPropertyType['key']>,
1224
+ readonly typeAnnotation: MaybeDetachedNode<
1135
1225
  RecordDeclarationPropertyType['typeAnnotation'],
1136
1226
  >,
1137
- +defaultValue?: ?MaybeDetachedNode<
1227
+ readonly defaultValue?: ?MaybeDetachedNode<
1138
1228
  RecordDeclarationPropertyType['defaultValue'],
1139
1229
  >,
1140
1230
  };
1141
1231
 
1142
1232
  export type RecordDeclarationStaticPropertyProps = {
1143
- +key: MaybeDetachedNode<RecordDeclarationStaticPropertyType['key']>,
1144
- +typeAnnotation: MaybeDetachedNode<
1233
+ readonly key: MaybeDetachedNode<RecordDeclarationStaticPropertyType['key']>,
1234
+ readonly typeAnnotation: MaybeDetachedNode<
1145
1235
  RecordDeclarationStaticPropertyType['typeAnnotation'],
1146
1236
  >,
1147
- +value: MaybeDetachedNode<RecordDeclarationStaticPropertyType['value']>,
1237
+ readonly value: MaybeDetachedNode<
1238
+ RecordDeclarationStaticPropertyType['value'],
1239
+ >,
1148
1240
  };
1149
1241
 
1150
1242
  export type RecordExpressionProps = {
1151
- +recordConstructor: MaybeDetachedNode<
1243
+ readonly recordConstructor: MaybeDetachedNode<
1152
1244
  RecordExpressionType['recordConstructor'],
1153
1245
  >,
1154
- +typeArguments?: ?MaybeDetachedNode<RecordExpressionType['typeArguments']>,
1155
- +properties: MaybeDetachedNode<RecordExpressionType['properties']>,
1246
+ readonly typeArguments?: ?MaybeDetachedNode<
1247
+ RecordExpressionType['typeArguments'],
1248
+ >,
1249
+ readonly properties: MaybeDetachedNode<RecordExpressionType['properties']>,
1156
1250
  };
1157
1251
 
1158
1252
  export type RecordExpressionPropertiesProps = {
1159
- +properties: $ReadOnlyArray<
1253
+ readonly properties: ReadonlyArray<
1160
1254
  MaybeDetachedNode<RecordExpressionPropertiesType['properties'][number]>,
1161
1255
  >,
1162
1256
  };
1163
1257
 
1164
1258
  export type RestElementProps = {
1165
- +argument: MaybeDetachedNode<RestElementType['argument']>,
1259
+ readonly argument: MaybeDetachedNode<RestElementType['argument']>,
1166
1260
  };
1167
1261
 
1168
1262
  export type ReturnStatementProps = {
1169
- +argument?: ?MaybeDetachedNode<ReturnStatementType['argument']>,
1263
+ readonly argument?: ?MaybeDetachedNode<ReturnStatementType['argument']>,
1170
1264
  };
1171
1265
 
1172
1266
  export type SequenceExpressionProps = {
1173
- +expressions: $ReadOnlyArray<
1267
+ readonly expressions: ReadonlyArray<
1174
1268
  MaybeDetachedNode<SequenceExpressionType['expressions'][number]>,
1175
1269
  >,
1176
1270
  };
1177
1271
 
1178
1272
  export type SpreadElementProps = {
1179
- +argument: MaybeDetachedNode<SpreadElementType['argument']>,
1273
+ readonly argument: MaybeDetachedNode<SpreadElementType['argument']>,
1180
1274
  };
1181
1275
 
1182
1276
  export type StaticBlockProps = {
1183
- +body: $ReadOnlyArray<MaybeDetachedNode<StaticBlockType['body'][number]>>,
1277
+ readonly body: ReadonlyArray<
1278
+ MaybeDetachedNode<StaticBlockType['body'][number]>,
1279
+ >,
1184
1280
  };
1185
1281
 
1186
1282
  export type StringLiteralTypeAnnotationProps = {
1187
- +value: StringLiteralTypeAnnotationType['value'],
1188
- +raw: StringLiteralTypeAnnotationType['raw'],
1283
+ readonly value: StringLiteralTypeAnnotationType['value'],
1284
+ readonly raw: StringLiteralTypeAnnotationType['raw'],
1189
1285
  };
1190
1286
 
1191
1287
  export type StringTypeAnnotationProps = {};
@@ -1193,15 +1289,15 @@ export type StringTypeAnnotationProps = {};
1193
1289
  export type SuperProps = {};
1194
1290
 
1195
1291
  export type SwitchCaseProps = {
1196
- +test?: ?MaybeDetachedNode<SwitchCaseType['test']>,
1197
- +consequent: $ReadOnlyArray<
1292
+ readonly test?: ?MaybeDetachedNode<SwitchCaseType['test']>,
1293
+ readonly consequent: ReadonlyArray<
1198
1294
  MaybeDetachedNode<SwitchCaseType['consequent'][number]>,
1199
1295
  >,
1200
1296
  };
1201
1297
 
1202
1298
  export type SwitchStatementProps = {
1203
- +discriminant: MaybeDetachedNode<SwitchStatementType['discriminant']>,
1204
- +cases: $ReadOnlyArray<
1299
+ readonly discriminant: MaybeDetachedNode<SwitchStatementType['discriminant']>,
1300
+ readonly cases: ReadonlyArray<
1205
1301
  MaybeDetachedNode<SwitchStatementType['cases'][number]>,
1206
1302
  >,
1207
1303
  };
@@ -1209,15 +1305,15 @@ export type SwitchStatementProps = {
1209
1305
  export type SymbolTypeAnnotationProps = {};
1210
1306
 
1211
1307
  export type TaggedTemplateExpressionProps = {
1212
- +tag: MaybeDetachedNode<TaggedTemplateExpressionType['tag']>,
1213
- +quasi: MaybeDetachedNode<TaggedTemplateExpressionType['quasi']>,
1308
+ readonly tag: MaybeDetachedNode<TaggedTemplateExpressionType['tag']>,
1309
+ readonly quasi: MaybeDetachedNode<TaggedTemplateExpressionType['quasi']>,
1214
1310
  };
1215
1311
 
1216
1312
  export type TemplateLiteralProps = {
1217
- +quasis: $ReadOnlyArray<
1313
+ readonly quasis: ReadonlyArray<
1218
1314
  MaybeDetachedNode<TemplateLiteralType['quasis'][number]>,
1219
1315
  >,
1220
- +expressions: $ReadOnlyArray<
1316
+ readonly expressions: ReadonlyArray<
1221
1317
  MaybeDetachedNode<TemplateLiteralType['expressions'][number]>,
1222
1318
  >,
1223
1319
  };
@@ -1227,100 +1323,112 @@ export type ThisExpressionProps = {};
1227
1323
  export type ThisTypeAnnotationProps = {};
1228
1324
 
1229
1325
  export type ThrowStatementProps = {
1230
- +argument: MaybeDetachedNode<ThrowStatementType['argument']>,
1326
+ readonly argument: MaybeDetachedNode<ThrowStatementType['argument']>,
1231
1327
  };
1232
1328
 
1233
1329
  export type TryStatementProps = {
1234
- +block: MaybeDetachedNode<TryStatementType['block']>,
1235
- +handler?: ?MaybeDetachedNode<TryStatementType['handler']>,
1236
- +finalizer?: ?MaybeDetachedNode<TryStatementType['finalizer']>,
1330
+ readonly block: MaybeDetachedNode<TryStatementType['block']>,
1331
+ readonly handler?: ?MaybeDetachedNode<TryStatementType['handler']>,
1332
+ readonly finalizer?: ?MaybeDetachedNode<TryStatementType['finalizer']>,
1237
1333
  };
1238
1334
 
1239
1335
  export type TupleTypeAnnotationProps = {
1240
- +elementTypes: $ReadOnlyArray<
1336
+ readonly elementTypes: ReadonlyArray<
1241
1337
  MaybeDetachedNode<TupleTypeAnnotationType['elementTypes'][number]>,
1242
1338
  >,
1243
- +inexact: TupleTypeAnnotationType['inexact'],
1339
+ readonly inexact: TupleTypeAnnotationType['inexact'],
1244
1340
  };
1245
1341
 
1246
1342
  export type TupleTypeLabeledElementProps = {
1247
- +label: MaybeDetachedNode<TupleTypeLabeledElementType['label']>,
1248
- +elementType: MaybeDetachedNode<TupleTypeLabeledElementType['elementType']>,
1249
- +optional: TupleTypeLabeledElementType['optional'],
1250
- +variance?: ?MaybeDetachedNode<TupleTypeLabeledElementType['variance']>,
1343
+ readonly label: MaybeDetachedNode<TupleTypeLabeledElementType['label']>,
1344
+ readonly elementType: MaybeDetachedNode<
1345
+ TupleTypeLabeledElementType['elementType'],
1346
+ >,
1347
+ readonly optional: TupleTypeLabeledElementType['optional'],
1348
+ readonly variance?: ?MaybeDetachedNode<
1349
+ TupleTypeLabeledElementType['variance'],
1350
+ >,
1251
1351
  };
1252
1352
 
1253
1353
  export type TupleTypeSpreadElementProps = {
1254
- +label?: ?MaybeDetachedNode<TupleTypeSpreadElementType['label']>,
1255
- +typeAnnotation: MaybeDetachedNode<
1354
+ readonly label?: ?MaybeDetachedNode<TupleTypeSpreadElementType['label']>,
1355
+ readonly typeAnnotation: MaybeDetachedNode<
1256
1356
  TupleTypeSpreadElementType['typeAnnotation'],
1257
1357
  >,
1258
1358
  };
1259
1359
 
1260
1360
  export type TypeAliasProps = {
1261
- +id: MaybeDetachedNode<TypeAliasType['id']>,
1262
- +typeParameters?: ?MaybeDetachedNode<TypeAliasType['typeParameters']>,
1263
- +right: MaybeDetachedNode<TypeAliasType['right']>,
1361
+ readonly id: MaybeDetachedNode<TypeAliasType['id']>,
1362
+ readonly typeParameters?: ?MaybeDetachedNode<TypeAliasType['typeParameters']>,
1363
+ readonly right: MaybeDetachedNode<TypeAliasType['right']>,
1264
1364
  };
1265
1365
 
1266
1366
  export type TypeAnnotationProps = {
1267
- +typeAnnotation: MaybeDetachedNode<TypeAnnotationType['typeAnnotation']>,
1367
+ readonly typeAnnotation: MaybeDetachedNode<
1368
+ TypeAnnotationType['typeAnnotation'],
1369
+ >,
1268
1370
  };
1269
1371
 
1270
1372
  export type TypeCastExpressionProps = {
1271
- +expression: MaybeDetachedNode<TypeCastExpressionType['expression']>,
1272
- +typeAnnotation: MaybeDetachedNode<TypeCastExpressionType['typeAnnotation']>,
1373
+ readonly expression: MaybeDetachedNode<TypeCastExpressionType['expression']>,
1374
+ readonly typeAnnotation: MaybeDetachedNode<
1375
+ TypeCastExpressionType['typeAnnotation'],
1376
+ >,
1273
1377
  };
1274
1378
 
1275
1379
  export type TypeofTypeAnnotationProps = {
1276
- +argument: MaybeDetachedNode<TypeofTypeAnnotationType['argument']>,
1277
- +typeArguments?: ?MaybeDetachedNode<
1380
+ readonly argument: MaybeDetachedNode<TypeofTypeAnnotationType['argument']>,
1381
+ readonly typeArguments?: ?MaybeDetachedNode<
1278
1382
  TypeofTypeAnnotationType['typeArguments'],
1279
1383
  >,
1280
1384
  };
1281
1385
 
1282
1386
  export type TypeOperatorProps = {
1283
- +operator: TypeOperatorType['operator'],
1284
- +typeAnnotation: MaybeDetachedNode<TypeOperatorType['typeAnnotation']>,
1387
+ readonly operator: TypeOperatorType['operator'],
1388
+ readonly typeAnnotation: MaybeDetachedNode<
1389
+ TypeOperatorType['typeAnnotation'],
1390
+ >,
1285
1391
  };
1286
1392
 
1287
1393
  export type TypeParameterProps = {
1288
- +name: TypeParameterType['name'],
1289
- +const: TypeParameterType['const'],
1290
- +bound?: ?MaybeDetachedNode<TypeParameterType['bound']>,
1291
- +variance?: ?MaybeDetachedNode<TypeParameterType['variance']>,
1292
- +default?: ?MaybeDetachedNode<TypeParameterType['default']>,
1293
- +usesExtendsBound: TypeParameterType['usesExtendsBound'],
1394
+ readonly name: TypeParameterType['name'],
1395
+ readonly const: TypeParameterType['const'],
1396
+ readonly bound?: ?MaybeDetachedNode<TypeParameterType['bound']>,
1397
+ readonly variance?: ?MaybeDetachedNode<TypeParameterType['variance']>,
1398
+ readonly default?: ?MaybeDetachedNode<TypeParameterType['default']>,
1399
+ readonly usesExtendsBound: TypeParameterType['usesExtendsBound'],
1294
1400
  };
1295
1401
 
1296
1402
  export type TypeParameterDeclarationProps = {
1297
- +params: $ReadOnlyArray<
1403
+ readonly params: ReadonlyArray<
1298
1404
  MaybeDetachedNode<TypeParameterDeclarationType['params'][number]>,
1299
1405
  >,
1300
1406
  };
1301
1407
 
1302
1408
  export type TypeParameterInstantiationProps = {
1303
- +params: $ReadOnlyArray<
1409
+ readonly params: ReadonlyArray<
1304
1410
  MaybeDetachedNode<TypeParameterInstantiationType['params'][number]>,
1305
1411
  >,
1306
1412
  };
1307
1413
 
1308
1414
  export type TypePredicateProps = {
1309
- +parameterName: MaybeDetachedNode<TypePredicateType['parameterName']>,
1310
- +typeAnnotation?: ?MaybeDetachedNode<TypePredicateType['typeAnnotation']>,
1311
- +kind?: ?TypePredicateType['kind'],
1415
+ readonly parameterName: MaybeDetachedNode<TypePredicateType['parameterName']>,
1416
+ readonly typeAnnotation?: ?MaybeDetachedNode<
1417
+ TypePredicateType['typeAnnotation'],
1418
+ >,
1419
+ readonly kind?: ?TypePredicateType['kind'],
1312
1420
  };
1313
1421
 
1314
1422
  export type UnaryExpressionProps = {
1315
- +operator: UnaryExpressionType['operator'],
1316
- +argument: MaybeDetachedNode<UnaryExpressionType['argument']>,
1317
- +prefix: UnaryExpressionType['prefix'],
1423
+ readonly operator: UnaryExpressionType['operator'],
1424
+ readonly argument: MaybeDetachedNode<UnaryExpressionType['argument']>,
1425
+ readonly prefix: UnaryExpressionType['prefix'],
1318
1426
  };
1319
1427
 
1320
1428
  export type UndefinedTypeAnnotationProps = {};
1321
1429
 
1322
1430
  export type UnionTypeAnnotationProps = {
1323
- +types: $ReadOnlyArray<
1431
+ readonly types: ReadonlyArray<
1324
1432
  MaybeDetachedNode<UnionTypeAnnotationType['types'][number]>,
1325
1433
  >,
1326
1434
  };
@@ -1328,129 +1436,129 @@ export type UnionTypeAnnotationProps = {
1328
1436
  export type UnknownTypeAnnotationProps = {};
1329
1437
 
1330
1438
  export type UpdateExpressionProps = {
1331
- +operator: UpdateExpressionType['operator'],
1332
- +argument: MaybeDetachedNode<UpdateExpressionType['argument']>,
1333
- +prefix: UpdateExpressionType['prefix'],
1439
+ readonly operator: UpdateExpressionType['operator'],
1440
+ readonly argument: MaybeDetachedNode<UpdateExpressionType['argument']>,
1441
+ readonly prefix: UpdateExpressionType['prefix'],
1334
1442
  };
1335
1443
 
1336
1444
  export type VariableDeclarationProps = {
1337
- +kind: VariableDeclarationType['kind'],
1338
- +declarations: $ReadOnlyArray<
1445
+ readonly kind: VariableDeclarationType['kind'],
1446
+ readonly declarations: ReadonlyArray<
1339
1447
  MaybeDetachedNode<VariableDeclarationType['declarations'][number]>,
1340
1448
  >,
1341
1449
  };
1342
1450
 
1343
1451
  export type VariableDeclaratorProps = {
1344
- +init?: ?MaybeDetachedNode<VariableDeclaratorType['init']>,
1345
- +id: MaybeDetachedNode<VariableDeclaratorType['id']>,
1452
+ readonly init?: ?MaybeDetachedNode<VariableDeclaratorType['init']>,
1453
+ readonly id: MaybeDetachedNode<VariableDeclaratorType['id']>,
1346
1454
  };
1347
1455
 
1348
1456
  export type VarianceProps = {
1349
- +kind: VarianceType['kind'],
1457
+ readonly kind: VarianceType['kind'],
1350
1458
  };
1351
1459
 
1352
1460
  export type VoidTypeAnnotationProps = {};
1353
1461
 
1354
1462
  export type WhileStatementProps = {
1355
- +body: MaybeDetachedNode<WhileStatementType['body']>,
1356
- +test: MaybeDetachedNode<WhileStatementType['test']>,
1463
+ readonly body: MaybeDetachedNode<WhileStatementType['body']>,
1464
+ readonly test: MaybeDetachedNode<WhileStatementType['test']>,
1357
1465
  };
1358
1466
 
1359
1467
  export type WithStatementProps = {
1360
- +object: MaybeDetachedNode<WithStatementType['object']>,
1361
- +body: MaybeDetachedNode<WithStatementType['body']>,
1468
+ readonly object: MaybeDetachedNode<WithStatementType['object']>,
1469
+ readonly body: MaybeDetachedNode<WithStatementType['body']>,
1362
1470
  };
1363
1471
 
1364
1472
  export type YieldExpressionProps = {
1365
- +argument?: ?MaybeDetachedNode<YieldExpressionType['argument']>,
1366
- +delegate?: ?YieldExpressionType['delegate'],
1473
+ readonly argument?: ?MaybeDetachedNode<YieldExpressionType['argument']>,
1474
+ readonly delegate?: ?YieldExpressionType['delegate'],
1367
1475
  };
1368
1476
 
1369
1477
  export function AnyTypeAnnotation(
1370
1478
  props: {
1371
- +parent?: ESNode,
1479
+ readonly parent?: ESNode,
1372
1480
  } = {...null},
1373
1481
  ): DetachedNode<AnyTypeAnnotationType> {
1374
- return detachedProps<AnyTypeAnnotationType>((props.parent: $FlowFixMe), {
1482
+ return detachedProps<AnyTypeAnnotationType>(props.parent as $FlowFixMe, {
1375
1483
  type: 'AnyTypeAnnotation',
1376
1484
  });
1377
1485
  }
1378
1486
 
1379
1487
  export function ArrayExpression(props: {
1380
1488
  ...ArrayExpressionProps,
1381
- +parent?: ESNode,
1489
+ readonly parent?: ESNode,
1382
1490
  }): DetachedNode<ArrayExpressionType> {
1383
- const node = detachedProps<ArrayExpressionType>((props.parent: $FlowFixMe), {
1491
+ const node = detachedProps<ArrayExpressionType>(props.parent as $FlowFixMe, {
1384
1492
  type: 'ArrayExpression',
1385
1493
  elements: props.elements.map(n => asDetachedNodeForCodeGen(n)),
1386
1494
  trailingComma: props.trailingComma,
1387
1495
  });
1388
- setParentPointersInDirectChildren((node: $FlowFixMe));
1496
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1389
1497
  return node;
1390
1498
  }
1391
1499
 
1392
1500
  export function ArrayPattern(props: {
1393
1501
  ...ArrayPatternProps,
1394
- +parent?: ESNode,
1502
+ readonly parent?: ESNode,
1395
1503
  }): DetachedNode<ArrayPatternType> {
1396
- const node = detachedProps<ArrayPatternType>((props.parent: $FlowFixMe), {
1504
+ const node = detachedProps<ArrayPatternType>(props.parent as $FlowFixMe, {
1397
1505
  type: 'ArrayPattern',
1398
1506
  elements: props.elements.map(n => asDetachedNodeForCodeGen(n)),
1399
1507
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
1400
1508
  });
1401
- setParentPointersInDirectChildren((node: $FlowFixMe));
1509
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1402
1510
  return node;
1403
1511
  }
1404
1512
 
1405
1513
  export function ArrayTypeAnnotation(props: {
1406
1514
  ...ArrayTypeAnnotationProps,
1407
- +parent?: ESNode,
1515
+ readonly parent?: ESNode,
1408
1516
  }): DetachedNode<ArrayTypeAnnotationType> {
1409
1517
  const node = detachedProps<ArrayTypeAnnotationType>(
1410
- (props.parent: $FlowFixMe),
1518
+ props.parent as $FlowFixMe,
1411
1519
  {
1412
1520
  type: 'ArrayTypeAnnotation',
1413
1521
  elementType: asDetachedNodeForCodeGen(props.elementType),
1414
1522
  },
1415
1523
  );
1416
- setParentPointersInDirectChildren((node: $FlowFixMe));
1524
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1417
1525
  return node;
1418
1526
  }
1419
1527
 
1420
1528
  export function AsConstExpression(props: {
1421
1529
  ...AsConstExpressionProps,
1422
- +parent?: ESNode,
1530
+ readonly parent?: ESNode,
1423
1531
  }): DetachedNode<AsConstExpressionType> {
1424
1532
  const node = detachedProps<AsConstExpressionType>(
1425
- (props.parent: $FlowFixMe),
1533
+ props.parent as $FlowFixMe,
1426
1534
  {
1427
1535
  type: 'AsConstExpression',
1428
1536
  expression: asDetachedNodeForCodeGen(props.expression),
1429
1537
  },
1430
1538
  );
1431
- setParentPointersInDirectChildren((node: $FlowFixMe));
1539
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1432
1540
  return node;
1433
1541
  }
1434
1542
 
1435
1543
  export function AsExpression(props: {
1436
1544
  ...AsExpressionProps,
1437
- +parent?: ESNode,
1545
+ readonly parent?: ESNode,
1438
1546
  }): DetachedNode<AsExpressionType> {
1439
- const node = detachedProps<AsExpressionType>((props.parent: $FlowFixMe), {
1547
+ const node = detachedProps<AsExpressionType>(props.parent as $FlowFixMe, {
1440
1548
  type: 'AsExpression',
1441
1549
  expression: asDetachedNodeForCodeGen(props.expression),
1442
1550
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
1443
1551
  });
1444
- setParentPointersInDirectChildren((node: $FlowFixMe));
1552
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1445
1553
  return node;
1446
1554
  }
1447
1555
 
1448
1556
  export function AssignmentExpression(props: {
1449
1557
  ...AssignmentExpressionProps,
1450
- +parent?: ESNode,
1558
+ readonly parent?: ESNode,
1451
1559
  }): DetachedNode<AssignmentExpressionType> {
1452
1560
  const node = detachedProps<AssignmentExpressionType>(
1453
- (props.parent: $FlowFixMe),
1561
+ props.parent as $FlowFixMe,
1454
1562
  {
1455
1563
  type: 'AssignmentExpression',
1456
1564
  operator: props.operator,
@@ -1458,171 +1566,171 @@ export function AssignmentExpression(props: {
1458
1566
  right: asDetachedNodeForCodeGen(props.right),
1459
1567
  },
1460
1568
  );
1461
- setParentPointersInDirectChildren((node: $FlowFixMe));
1569
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1462
1570
  return node;
1463
1571
  }
1464
1572
 
1465
1573
  export function AssignmentPattern(props: {
1466
1574
  ...AssignmentPatternProps,
1467
- +parent?: ESNode,
1575
+ readonly parent?: ESNode,
1468
1576
  }): DetachedNode<AssignmentPatternType> {
1469
1577
  const node = detachedProps<AssignmentPatternType>(
1470
- (props.parent: $FlowFixMe),
1578
+ props.parent as $FlowFixMe,
1471
1579
  {
1472
1580
  type: 'AssignmentPattern',
1473
1581
  left: asDetachedNodeForCodeGen(props.left),
1474
1582
  right: asDetachedNodeForCodeGen(props.right),
1475
1583
  },
1476
1584
  );
1477
- setParentPointersInDirectChildren((node: $FlowFixMe));
1585
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1478
1586
  return node;
1479
1587
  }
1480
1588
 
1481
1589
  export function AwaitExpression(props: {
1482
1590
  ...AwaitExpressionProps,
1483
- +parent?: ESNode,
1591
+ readonly parent?: ESNode,
1484
1592
  }): DetachedNode<AwaitExpressionType> {
1485
- const node = detachedProps<AwaitExpressionType>((props.parent: $FlowFixMe), {
1593
+ const node = detachedProps<AwaitExpressionType>(props.parent as $FlowFixMe, {
1486
1594
  type: 'AwaitExpression',
1487
1595
  argument: asDetachedNodeForCodeGen(props.argument),
1488
1596
  });
1489
- setParentPointersInDirectChildren((node: $FlowFixMe));
1597
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1490
1598
  return node;
1491
1599
  }
1492
1600
 
1493
1601
  export function BigIntLiteralTypeAnnotation(props: {
1494
1602
  ...BigIntLiteralTypeAnnotationProps,
1495
- +parent?: ESNode,
1603
+ readonly parent?: ESNode,
1496
1604
  }): DetachedNode<BigIntLiteralTypeAnnotationType> {
1497
1605
  const node = detachedProps<BigIntLiteralTypeAnnotationType>(
1498
- (props.parent: $FlowFixMe),
1606
+ props.parent as $FlowFixMe,
1499
1607
  {
1500
1608
  type: 'BigIntLiteralTypeAnnotation',
1501
1609
  raw: props.raw,
1502
1610
  },
1503
1611
  );
1504
- setParentPointersInDirectChildren((node: $FlowFixMe));
1612
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1505
1613
  return node;
1506
1614
  }
1507
1615
 
1508
1616
  export function BigIntTypeAnnotation(
1509
1617
  props: {
1510
- +parent?: ESNode,
1618
+ readonly parent?: ESNode,
1511
1619
  } = {...null},
1512
1620
  ): DetachedNode<BigIntTypeAnnotationType> {
1513
- return detachedProps<BigIntTypeAnnotationType>((props.parent: $FlowFixMe), {
1621
+ return detachedProps<BigIntTypeAnnotationType>(props.parent as $FlowFixMe, {
1514
1622
  type: 'BigIntTypeAnnotation',
1515
1623
  });
1516
1624
  }
1517
1625
 
1518
1626
  export function BinaryExpression(props: {
1519
1627
  ...BinaryExpressionProps,
1520
- +parent?: ESNode,
1628
+ readonly parent?: ESNode,
1521
1629
  }): DetachedNode<BinaryExpressionType> {
1522
- const node = detachedProps<BinaryExpressionType>((props.parent: $FlowFixMe), {
1630
+ const node = detachedProps<BinaryExpressionType>(props.parent as $FlowFixMe, {
1523
1631
  type: 'BinaryExpression',
1524
1632
  left: asDetachedNodeForCodeGen(props.left),
1525
1633
  right: asDetachedNodeForCodeGen(props.right),
1526
1634
  operator: props.operator,
1527
1635
  });
1528
- setParentPointersInDirectChildren((node: $FlowFixMe));
1636
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1529
1637
  return node;
1530
1638
  }
1531
1639
 
1532
1640
  export function BooleanLiteralTypeAnnotation(props: {
1533
1641
  ...BooleanLiteralTypeAnnotationProps,
1534
- +parent?: ESNode,
1642
+ readonly parent?: ESNode,
1535
1643
  }): DetachedNode<BooleanLiteralTypeAnnotationType> {
1536
1644
  const node = detachedProps<BooleanLiteralTypeAnnotationType>(
1537
- (props.parent: $FlowFixMe),
1645
+ props.parent as $FlowFixMe,
1538
1646
  {
1539
1647
  type: 'BooleanLiteralTypeAnnotation',
1540
1648
  value: props.value,
1541
1649
  raw: props.raw,
1542
1650
  },
1543
1651
  );
1544
- setParentPointersInDirectChildren((node: $FlowFixMe));
1652
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1545
1653
  return node;
1546
1654
  }
1547
1655
 
1548
1656
  export function BooleanTypeAnnotation(
1549
1657
  props: {
1550
- +parent?: ESNode,
1658
+ readonly parent?: ESNode,
1551
1659
  } = {...null},
1552
1660
  ): DetachedNode<BooleanTypeAnnotationType> {
1553
- return detachedProps<BooleanTypeAnnotationType>((props.parent: $FlowFixMe), {
1661
+ return detachedProps<BooleanTypeAnnotationType>(props.parent as $FlowFixMe, {
1554
1662
  type: 'BooleanTypeAnnotation',
1555
1663
  });
1556
1664
  }
1557
1665
 
1558
1666
  export function BreakStatement(props: {
1559
1667
  ...BreakStatementProps,
1560
- +parent?: ESNode,
1668
+ readonly parent?: ESNode,
1561
1669
  }): DetachedNode<BreakStatementType> {
1562
- const node = detachedProps<BreakStatementType>((props.parent: $FlowFixMe), {
1670
+ const node = detachedProps<BreakStatementType>(props.parent as $FlowFixMe, {
1563
1671
  type: 'BreakStatement',
1564
1672
  label: asDetachedNodeForCodeGen(props.label),
1565
1673
  });
1566
- setParentPointersInDirectChildren((node: $FlowFixMe));
1674
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1567
1675
  return node;
1568
1676
  }
1569
1677
 
1570
1678
  export function CallExpression(props: {
1571
1679
  ...CallExpressionProps,
1572
- +parent?: ESNode,
1680
+ readonly parent?: ESNode,
1573
1681
  }): DetachedNode<CallExpressionType> {
1574
- const node = detachedProps<CallExpressionType>((props.parent: $FlowFixMe), {
1682
+ const node = detachedProps<CallExpressionType>(props.parent as $FlowFixMe, {
1575
1683
  type: 'CallExpression',
1576
1684
  callee: asDetachedNodeForCodeGen(props.callee),
1577
1685
  typeArguments: asDetachedNodeForCodeGen(props.typeArguments),
1578
1686
  arguments: props.arguments.map(n => asDetachedNodeForCodeGen(n)),
1579
1687
  });
1580
- setParentPointersInDirectChildren((node: $FlowFixMe));
1688
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1581
1689
  return node;
1582
1690
  }
1583
1691
 
1584
1692
  export function CatchClause(props: {
1585
1693
  ...CatchClauseProps,
1586
- +parent?: ESNode,
1694
+ readonly parent?: ESNode,
1587
1695
  }): DetachedNode<CatchClauseType> {
1588
- const node = detachedProps<CatchClauseType>((props.parent: $FlowFixMe), {
1696
+ const node = detachedProps<CatchClauseType>(props.parent as $FlowFixMe, {
1589
1697
  type: 'CatchClause',
1590
1698
  param: asDetachedNodeForCodeGen(props.param),
1591
1699
  body: asDetachedNodeForCodeGen(props.body),
1592
1700
  });
1593
- setParentPointersInDirectChildren((node: $FlowFixMe));
1701
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1594
1702
  return node;
1595
1703
  }
1596
1704
 
1597
1705
  export function ChainExpression(props: {
1598
1706
  ...ChainExpressionProps,
1599
- +parent?: ESNode,
1707
+ readonly parent?: ESNode,
1600
1708
  }): DetachedNode<ChainExpressionType> {
1601
- const node = detachedProps<ChainExpressionType>((props.parent: $FlowFixMe), {
1709
+ const node = detachedProps<ChainExpressionType>(props.parent as $FlowFixMe, {
1602
1710
  type: 'ChainExpression',
1603
1711
  expression: asDetachedNodeForCodeGen(props.expression),
1604
1712
  });
1605
- setParentPointersInDirectChildren((node: $FlowFixMe));
1713
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1606
1714
  return node;
1607
1715
  }
1608
1716
 
1609
1717
  export function ClassBody(props: {
1610
1718
  ...ClassBodyProps,
1611
- +parent?: ESNode,
1719
+ readonly parent?: ESNode,
1612
1720
  }): DetachedNode<ClassBodyType> {
1613
- const node = detachedProps<ClassBodyType>((props.parent: $FlowFixMe), {
1721
+ const node = detachedProps<ClassBodyType>(props.parent as $FlowFixMe, {
1614
1722
  type: 'ClassBody',
1615
1723
  body: props.body.map(n => asDetachedNodeForCodeGen(n)),
1616
1724
  });
1617
- setParentPointersInDirectChildren((node: $FlowFixMe));
1725
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1618
1726
  return node;
1619
1727
  }
1620
1728
 
1621
1729
  export function ClassExpression(props: {
1622
1730
  ...ClassExpressionProps,
1623
- +parent?: ESNode,
1731
+ readonly parent?: ESNode,
1624
1732
  }): DetachedNode<ClassExpressionType> {
1625
- const node = detachedProps<ClassExpressionType>((props.parent: $FlowFixMe), {
1733
+ const node = detachedProps<ClassExpressionType>(props.parent as $FlowFixMe, {
1626
1734
  type: 'ClassExpression',
1627
1735
  id: asDetachedNodeForCodeGen(props.id),
1628
1736
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
@@ -1632,29 +1740,29 @@ export function ClassExpression(props: {
1632
1740
  decorators: props.decorators.map(n => asDetachedNodeForCodeGen(n)),
1633
1741
  body: asDetachedNodeForCodeGen(props.body),
1634
1742
  });
1635
- setParentPointersInDirectChildren((node: $FlowFixMe));
1743
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1636
1744
  return node;
1637
1745
  }
1638
1746
 
1639
1747
  export function ClassImplements(props: {
1640
1748
  ...ClassImplementsProps,
1641
- +parent?: ESNode,
1749
+ readonly parent?: ESNode,
1642
1750
  }): DetachedNode<ClassImplementsType> {
1643
- const node = detachedProps<ClassImplementsType>((props.parent: $FlowFixMe), {
1751
+ const node = detachedProps<ClassImplementsType>(props.parent as $FlowFixMe, {
1644
1752
  type: 'ClassImplements',
1645
1753
  id: asDetachedNodeForCodeGen(props.id),
1646
1754
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
1647
1755
  });
1648
- setParentPointersInDirectChildren((node: $FlowFixMe));
1756
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1649
1757
  return node;
1650
1758
  }
1651
1759
 
1652
1760
  export function ComponentDeclaration(props: {
1653
1761
  ...ComponentDeclarationProps,
1654
- +parent?: ESNode,
1762
+ readonly parent?: ESNode,
1655
1763
  }): DetachedNode<ComponentDeclarationType> {
1656
1764
  const node = detachedProps<ComponentDeclarationType>(
1657
- (props.parent: $FlowFixMe),
1765
+ props.parent as $FlowFixMe,
1658
1766
  {
1659
1767
  type: 'ComponentDeclaration',
1660
1768
  id: asDetachedNodeForCodeGen(props.id),
@@ -1665,16 +1773,16 @@ export function ComponentDeclaration(props: {
1665
1773
  async: props.async,
1666
1774
  },
1667
1775
  );
1668
- setParentPointersInDirectChildren((node: $FlowFixMe));
1776
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1669
1777
  return node;
1670
1778
  }
1671
1779
 
1672
1780
  export function ComponentParameter(props: {
1673
1781
  ...ComponentParameterProps,
1674
- +parent?: ESNode,
1782
+ readonly parent?: ESNode,
1675
1783
  }): DetachedNode<ComponentParameterType> {
1676
1784
  const node = detachedProps<ComponentParameterType>(
1677
- (props.parent: $FlowFixMe),
1785
+ props.parent as $FlowFixMe,
1678
1786
  {
1679
1787
  type: 'ComponentParameter',
1680
1788
  name: asDetachedNodeForCodeGen(props.name),
@@ -1682,16 +1790,16 @@ export function ComponentParameter(props: {
1682
1790
  shorthand: props.shorthand,
1683
1791
  },
1684
1792
  );
1685
- setParentPointersInDirectChildren((node: $FlowFixMe));
1793
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1686
1794
  return node;
1687
1795
  }
1688
1796
 
1689
1797
  export function ComponentTypeAnnotation(props: {
1690
1798
  ...ComponentTypeAnnotationProps,
1691
- +parent?: ESNode,
1799
+ readonly parent?: ESNode,
1692
1800
  }): DetachedNode<ComponentTypeAnnotationType> {
1693
1801
  const node = detachedProps<ComponentTypeAnnotationType>(
1694
- (props.parent: $FlowFixMe),
1802
+ props.parent as $FlowFixMe,
1695
1803
  {
1696
1804
  type: 'ComponentTypeAnnotation',
1697
1805
  params: props.params.map(n => asDetachedNodeForCodeGen(n)),
@@ -1700,16 +1808,16 @@ export function ComponentTypeAnnotation(props: {
1700
1808
  rendersType: asDetachedNodeForCodeGen(props.rendersType),
1701
1809
  },
1702
1810
  );
1703
- setParentPointersInDirectChildren((node: $FlowFixMe));
1811
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1704
1812
  return node;
1705
1813
  }
1706
1814
 
1707
1815
  export function ComponentTypeParameter(props: {
1708
1816
  ...ComponentTypeParameterProps,
1709
- +parent?: ESNode,
1817
+ readonly parent?: ESNode,
1710
1818
  }): DetachedNode<ComponentTypeParameterType> {
1711
1819
  const node = detachedProps<ComponentTypeParameterType>(
1712
- (props.parent: $FlowFixMe),
1820
+ props.parent as $FlowFixMe,
1713
1821
  {
1714
1822
  type: 'ComponentTypeParameter',
1715
1823
  name: asDetachedNodeForCodeGen(props.name),
@@ -1717,16 +1825,16 @@ export function ComponentTypeParameter(props: {
1717
1825
  optional: props.optional,
1718
1826
  },
1719
1827
  );
1720
- setParentPointersInDirectChildren((node: $FlowFixMe));
1828
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1721
1829
  return node;
1722
1830
  }
1723
1831
 
1724
1832
  export function ConditionalExpression(props: {
1725
1833
  ...ConditionalExpressionProps,
1726
- +parent?: ESNode,
1834
+ readonly parent?: ESNode,
1727
1835
  }): DetachedNode<ConditionalExpressionType> {
1728
1836
  const node = detachedProps<ConditionalExpressionType>(
1729
- (props.parent: $FlowFixMe),
1837
+ props.parent as $FlowFixMe,
1730
1838
  {
1731
1839
  type: 'ConditionalExpression',
1732
1840
  test: asDetachedNodeForCodeGen(props.test),
@@ -1734,16 +1842,16 @@ export function ConditionalExpression(props: {
1734
1842
  consequent: asDetachedNodeForCodeGen(props.consequent),
1735
1843
  },
1736
1844
  );
1737
- setParentPointersInDirectChildren((node: $FlowFixMe));
1845
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1738
1846
  return node;
1739
1847
  }
1740
1848
 
1741
1849
  export function ConditionalTypeAnnotation(props: {
1742
1850
  ...ConditionalTypeAnnotationProps,
1743
- +parent?: ESNode,
1851
+ readonly parent?: ESNode,
1744
1852
  }): DetachedNode<ConditionalTypeAnnotationType> {
1745
1853
  const node = detachedProps<ConditionalTypeAnnotationType>(
1746
- (props.parent: $FlowFixMe),
1854
+ props.parent as $FlowFixMe,
1747
1855
  {
1748
1856
  type: 'ConditionalTypeAnnotation',
1749
1857
  checkType: asDetachedNodeForCodeGen(props.checkType),
@@ -1752,40 +1860,40 @@ export function ConditionalTypeAnnotation(props: {
1752
1860
  falseType: asDetachedNodeForCodeGen(props.falseType),
1753
1861
  },
1754
1862
  );
1755
- setParentPointersInDirectChildren((node: $FlowFixMe));
1863
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1756
1864
  return node;
1757
1865
  }
1758
1866
 
1759
1867
  export function ContinueStatement(props: {
1760
1868
  ...ContinueStatementProps,
1761
- +parent?: ESNode,
1869
+ readonly parent?: ESNode,
1762
1870
  }): DetachedNode<ContinueStatementType> {
1763
1871
  const node = detachedProps<ContinueStatementType>(
1764
- (props.parent: $FlowFixMe),
1872
+ props.parent as $FlowFixMe,
1765
1873
  {
1766
1874
  type: 'ContinueStatement',
1767
1875
  label: asDetachedNodeForCodeGen(props.label),
1768
1876
  },
1769
1877
  );
1770
- setParentPointersInDirectChildren((node: $FlowFixMe));
1878
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1771
1879
  return node;
1772
1880
  }
1773
1881
 
1774
1882
  export function DebuggerStatement(
1775
1883
  props: {
1776
- +parent?: ESNode,
1884
+ readonly parent?: ESNode,
1777
1885
  } = {...null},
1778
1886
  ): DetachedNode<DebuggerStatementType> {
1779
- return detachedProps<DebuggerStatementType>((props.parent: $FlowFixMe), {
1887
+ return detachedProps<DebuggerStatementType>(props.parent as $FlowFixMe, {
1780
1888
  type: 'DebuggerStatement',
1781
1889
  });
1782
1890
  }
1783
1891
 
1784
1892
  export function DeclareClass(props: {
1785
1893
  ...DeclareClassProps,
1786
- +parent?: ESNode,
1894
+ readonly parent?: ESNode,
1787
1895
  }): DetachedNode<DeclareClassType> {
1788
- const node = detachedProps<DeclareClassType>((props.parent: $FlowFixMe), {
1896
+ const node = detachedProps<DeclareClassType>(props.parent as $FlowFixMe, {
1789
1897
  type: 'DeclareClass',
1790
1898
  id: asDetachedNodeForCodeGen(props.id),
1791
1899
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
@@ -1794,15 +1902,15 @@ export function DeclareClass(props: {
1794
1902
  mixins: props.mixins.map(n => asDetachedNodeForCodeGen(n)),
1795
1903
  body: asDetachedNodeForCodeGen(props.body),
1796
1904
  });
1797
- setParentPointersInDirectChildren((node: $FlowFixMe));
1905
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1798
1906
  return node;
1799
1907
  }
1800
1908
 
1801
1909
  export function DeclareComponent(props: {
1802
1910
  ...DeclareComponentProps,
1803
- +parent?: ESNode,
1911
+ readonly parent?: ESNode,
1804
1912
  }): DetachedNode<DeclareComponentType> {
1805
- const node = detachedProps<DeclareComponentType>((props.parent: $FlowFixMe), {
1913
+ const node = detachedProps<DeclareComponentType>(props.parent as $FlowFixMe, {
1806
1914
  type: 'DeclareComponent',
1807
1915
  id: asDetachedNodeForCodeGen(props.id),
1808
1916
  params: props.params.map(n => asDetachedNodeForCodeGen(n)),
@@ -1810,115 +1918,115 @@ export function DeclareComponent(props: {
1810
1918
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
1811
1919
  rendersType: asDetachedNodeForCodeGen(props.rendersType),
1812
1920
  });
1813
- setParentPointersInDirectChildren((node: $FlowFixMe));
1921
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1814
1922
  return node;
1815
1923
  }
1816
1924
 
1817
1925
  export function DeclaredPredicate(props: {
1818
1926
  ...DeclaredPredicateProps,
1819
- +parent?: ESNode,
1927
+ readonly parent?: ESNode,
1820
1928
  }): DetachedNode<DeclaredPredicateType> {
1821
1929
  const node = detachedProps<DeclaredPredicateType>(
1822
- (props.parent: $FlowFixMe),
1930
+ props.parent as $FlowFixMe,
1823
1931
  {
1824
1932
  type: 'DeclaredPredicate',
1825
1933
  value: asDetachedNodeForCodeGen(props.value),
1826
1934
  },
1827
1935
  );
1828
- setParentPointersInDirectChildren((node: $FlowFixMe));
1936
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1829
1937
  return node;
1830
1938
  }
1831
1939
 
1832
1940
  export function DeclareEnum(props: {
1833
1941
  ...DeclareEnumProps,
1834
- +parent?: ESNode,
1942
+ readonly parent?: ESNode,
1835
1943
  }): DetachedNode<DeclareEnumType> {
1836
- const node = detachedProps<DeclareEnumType>((props.parent: $FlowFixMe), {
1944
+ const node = detachedProps<DeclareEnumType>(props.parent as $FlowFixMe, {
1837
1945
  type: 'DeclareEnum',
1838
1946
  id: asDetachedNodeForCodeGen(props.id),
1839
1947
  body: asDetachedNodeForCodeGen(props.body),
1840
1948
  });
1841
- setParentPointersInDirectChildren((node: $FlowFixMe));
1949
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1842
1950
  return node;
1843
1951
  }
1844
1952
 
1845
1953
  export function DeclareExportAllDeclaration(props: {
1846
1954
  ...DeclareExportAllDeclarationProps,
1847
- +parent?: ESNode,
1955
+ readonly parent?: ESNode,
1848
1956
  }): DetachedNode<DeclareExportAllDeclarationType> {
1849
1957
  const node = detachedProps<DeclareExportAllDeclarationType>(
1850
- (props.parent: $FlowFixMe),
1958
+ props.parent as $FlowFixMe,
1851
1959
  {
1852
1960
  type: 'DeclareExportAllDeclaration',
1853
1961
  source: asDetachedNodeForCodeGen(props.source),
1854
1962
  },
1855
1963
  );
1856
- setParentPointersInDirectChildren((node: $FlowFixMe));
1964
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1857
1965
  return node;
1858
1966
  }
1859
1967
 
1860
1968
  export function DeclareInterface(props: {
1861
1969
  ...DeclareInterfaceProps,
1862
- +parent?: ESNode,
1970
+ readonly parent?: ESNode,
1863
1971
  }): DetachedNode<DeclareInterfaceType> {
1864
- const node = detachedProps<DeclareInterfaceType>((props.parent: $FlowFixMe), {
1972
+ const node = detachedProps<DeclareInterfaceType>(props.parent as $FlowFixMe, {
1865
1973
  type: 'DeclareInterface',
1866
1974
  id: asDetachedNodeForCodeGen(props.id),
1867
1975
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
1868
1976
  extends: props.extends.map(n => asDetachedNodeForCodeGen(n)),
1869
1977
  body: asDetachedNodeForCodeGen(props.body),
1870
1978
  });
1871
- setParentPointersInDirectChildren((node: $FlowFixMe));
1979
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1872
1980
  return node;
1873
1981
  }
1874
1982
 
1875
1983
  export function DeclareModule(props: {
1876
1984
  ...DeclareModuleProps,
1877
- +parent?: ESNode,
1985
+ readonly parent?: ESNode,
1878
1986
  }): DetachedNode<DeclareModuleType> {
1879
- const node = detachedProps<DeclareModuleType>((props.parent: $FlowFixMe), {
1987
+ const node = detachedProps<DeclareModuleType>(props.parent as $FlowFixMe, {
1880
1988
  type: 'DeclareModule',
1881
1989
  id: asDetachedNodeForCodeGen(props.id),
1882
1990
  body: asDetachedNodeForCodeGen(props.body),
1883
1991
  });
1884
- setParentPointersInDirectChildren((node: $FlowFixMe));
1992
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1885
1993
  return node;
1886
1994
  }
1887
1995
 
1888
1996
  export function DeclareModuleExports(props: {
1889
1997
  ...DeclareModuleExportsProps,
1890
- +parent?: ESNode,
1998
+ readonly parent?: ESNode,
1891
1999
  }): DetachedNode<DeclareModuleExportsType> {
1892
2000
  const node = detachedProps<DeclareModuleExportsType>(
1893
- (props.parent: $FlowFixMe),
2001
+ props.parent as $FlowFixMe,
1894
2002
  {
1895
2003
  type: 'DeclareModuleExports',
1896
2004
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
1897
2005
  },
1898
2006
  );
1899
- setParentPointersInDirectChildren((node: $FlowFixMe));
2007
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1900
2008
  return node;
1901
2009
  }
1902
2010
 
1903
2011
  export function DeclareNamespace(props: {
1904
2012
  ...DeclareNamespaceProps,
1905
- +parent?: ESNode,
2013
+ readonly parent?: ESNode,
1906
2014
  }): DetachedNode<DeclareNamespaceType> {
1907
- const node = detachedProps<DeclareNamespaceType>((props.parent: $FlowFixMe), {
2015
+ const node = detachedProps<DeclareNamespaceType>(props.parent as $FlowFixMe, {
1908
2016
  type: 'DeclareNamespace',
1909
2017
  id: asDetachedNodeForCodeGen(props.id),
1910
2018
  body: asDetachedNodeForCodeGen(props.body),
1911
2019
  });
1912
- setParentPointersInDirectChildren((node: $FlowFixMe));
2020
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1913
2021
  return node;
1914
2022
  }
1915
2023
 
1916
2024
  export function DeclareOpaqueType(props: {
1917
2025
  ...DeclareOpaqueTypeProps,
1918
- +parent?: ESNode,
2026
+ readonly parent?: ESNode,
1919
2027
  }): DetachedNode<DeclareOpaqueTypeType> {
1920
2028
  const node = detachedProps<DeclareOpaqueTypeType>(
1921
- (props.parent: $FlowFixMe),
2029
+ props.parent as $FlowFixMe,
1922
2030
  {
1923
2031
  type: 'DeclareOpaqueType',
1924
2032
  id: asDetachedNodeForCodeGen(props.id),
@@ -1929,250 +2037,250 @@ export function DeclareOpaqueType(props: {
1929
2037
  supertype: asDetachedNodeForCodeGen(props.supertype),
1930
2038
  },
1931
2039
  );
1932
- setParentPointersInDirectChildren((node: $FlowFixMe));
2040
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1933
2041
  return node;
1934
2042
  }
1935
2043
 
1936
2044
  export function DeclareTypeAlias(props: {
1937
2045
  ...DeclareTypeAliasProps,
1938
- +parent?: ESNode,
2046
+ readonly parent?: ESNode,
1939
2047
  }): DetachedNode<DeclareTypeAliasType> {
1940
- const node = detachedProps<DeclareTypeAliasType>((props.parent: $FlowFixMe), {
2048
+ const node = detachedProps<DeclareTypeAliasType>(props.parent as $FlowFixMe, {
1941
2049
  type: 'DeclareTypeAlias',
1942
2050
  id: asDetachedNodeForCodeGen(props.id),
1943
2051
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
1944
2052
  right: asDetachedNodeForCodeGen(props.right),
1945
2053
  });
1946
- setParentPointersInDirectChildren((node: $FlowFixMe));
2054
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1947
2055
  return node;
1948
2056
  }
1949
2057
 
1950
2058
  export function DeclareVariable(props: {
1951
2059
  ...DeclareVariableProps,
1952
- +parent?: ESNode,
2060
+ readonly parent?: ESNode,
1953
2061
  }): DetachedNode<DeclareVariableType> {
1954
- const node = detachedProps<DeclareVariableType>((props.parent: $FlowFixMe), {
2062
+ const node = detachedProps<DeclareVariableType>(props.parent as $FlowFixMe, {
1955
2063
  type: 'DeclareVariable',
1956
2064
  id: asDetachedNodeForCodeGen(props.id),
1957
2065
  kind: props.kind,
1958
2066
  });
1959
- setParentPointersInDirectChildren((node: $FlowFixMe));
2067
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1960
2068
  return node;
1961
2069
  }
1962
2070
 
1963
2071
  export function Decorator(props: {
1964
2072
  ...DecoratorProps,
1965
- +parent?: ESNode,
2073
+ readonly parent?: ESNode,
1966
2074
  }): DetachedNode<DecoratorType> {
1967
- const node = detachedProps<DecoratorType>((props.parent: $FlowFixMe), {
2075
+ const node = detachedProps<DecoratorType>(props.parent as $FlowFixMe, {
1968
2076
  type: 'Decorator',
1969
2077
  expression: asDetachedNodeForCodeGen(props.expression),
1970
2078
  });
1971
- setParentPointersInDirectChildren((node: $FlowFixMe));
2079
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1972
2080
  return node;
1973
2081
  }
1974
2082
 
1975
2083
  export function DoWhileStatement(props: {
1976
2084
  ...DoWhileStatementProps,
1977
- +parent?: ESNode,
2085
+ readonly parent?: ESNode,
1978
2086
  }): DetachedNode<DoWhileStatementType> {
1979
- const node = detachedProps<DoWhileStatementType>((props.parent: $FlowFixMe), {
2087
+ const node = detachedProps<DoWhileStatementType>(props.parent as $FlowFixMe, {
1980
2088
  type: 'DoWhileStatement',
1981
2089
  body: asDetachedNodeForCodeGen(props.body),
1982
2090
  test: asDetachedNodeForCodeGen(props.test),
1983
2091
  });
1984
- setParentPointersInDirectChildren((node: $FlowFixMe));
2092
+ setParentPointersInDirectChildren(node as $FlowFixMe);
1985
2093
  return node;
1986
2094
  }
1987
2095
 
1988
2096
  export function EmptyStatement(
1989
2097
  props: {
1990
- +parent?: ESNode,
2098
+ readonly parent?: ESNode,
1991
2099
  } = {...null},
1992
2100
  ): DetachedNode<EmptyStatementType> {
1993
- return detachedProps<EmptyStatementType>((props.parent: $FlowFixMe), {
2101
+ return detachedProps<EmptyStatementType>(props.parent as $FlowFixMe, {
1994
2102
  type: 'EmptyStatement',
1995
2103
  });
1996
2104
  }
1997
2105
 
1998
2106
  export function EmptyTypeAnnotation(
1999
2107
  props: {
2000
- +parent?: ESNode,
2108
+ readonly parent?: ESNode,
2001
2109
  } = {...null},
2002
2110
  ): DetachedNode<EmptyTypeAnnotationType> {
2003
- return detachedProps<EmptyTypeAnnotationType>((props.parent: $FlowFixMe), {
2111
+ return detachedProps<EmptyTypeAnnotationType>(props.parent as $FlowFixMe, {
2004
2112
  type: 'EmptyTypeAnnotation',
2005
2113
  });
2006
2114
  }
2007
2115
 
2008
2116
  export function EnumBigIntBody(props: {
2009
2117
  ...EnumBigIntBodyProps,
2010
- +parent?: ESNode,
2118
+ readonly parent?: ESNode,
2011
2119
  }): DetachedNode<EnumBigIntBodyType> {
2012
- const node = detachedProps<EnumBigIntBodyType>((props.parent: $FlowFixMe), {
2120
+ const node = detachedProps<EnumBigIntBodyType>(props.parent as $FlowFixMe, {
2013
2121
  type: 'EnumBigIntBody',
2014
2122
  members: props.members.map(n => asDetachedNodeForCodeGen(n)),
2015
2123
  explicitType: props.explicitType,
2016
2124
  hasUnknownMembers: props.hasUnknownMembers,
2017
2125
  });
2018
- setParentPointersInDirectChildren((node: $FlowFixMe));
2126
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2019
2127
  return node;
2020
2128
  }
2021
2129
 
2022
2130
  export function EnumBigIntMember(props: {
2023
2131
  ...EnumBigIntMemberProps,
2024
- +parent?: ESNode,
2132
+ readonly parent?: ESNode,
2025
2133
  }): DetachedNode<EnumBigIntMemberType> {
2026
- const node = detachedProps<EnumBigIntMemberType>((props.parent: $FlowFixMe), {
2134
+ const node = detachedProps<EnumBigIntMemberType>(props.parent as $FlowFixMe, {
2027
2135
  type: 'EnumBigIntMember',
2028
2136
  id: asDetachedNodeForCodeGen(props.id),
2029
2137
  init: asDetachedNodeForCodeGen(props.init),
2030
2138
  });
2031
- setParentPointersInDirectChildren((node: $FlowFixMe));
2139
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2032
2140
  return node;
2033
2141
  }
2034
2142
 
2035
2143
  export function EnumBooleanBody(props: {
2036
2144
  ...EnumBooleanBodyProps,
2037
- +parent?: ESNode,
2145
+ readonly parent?: ESNode,
2038
2146
  }): DetachedNode<EnumBooleanBodyType> {
2039
- const node = detachedProps<EnumBooleanBodyType>((props.parent: $FlowFixMe), {
2147
+ const node = detachedProps<EnumBooleanBodyType>(props.parent as $FlowFixMe, {
2040
2148
  type: 'EnumBooleanBody',
2041
2149
  members: props.members.map(n => asDetachedNodeForCodeGen(n)),
2042
2150
  explicitType: props.explicitType,
2043
2151
  hasUnknownMembers: props.hasUnknownMembers,
2044
2152
  });
2045
- setParentPointersInDirectChildren((node: $FlowFixMe));
2153
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2046
2154
  return node;
2047
2155
  }
2048
2156
 
2049
2157
  export function EnumBooleanMember(props: {
2050
2158
  ...EnumBooleanMemberProps,
2051
- +parent?: ESNode,
2159
+ readonly parent?: ESNode,
2052
2160
  }): DetachedNode<EnumBooleanMemberType> {
2053
2161
  const node = detachedProps<EnumBooleanMemberType>(
2054
- (props.parent: $FlowFixMe),
2162
+ props.parent as $FlowFixMe,
2055
2163
  {
2056
2164
  type: 'EnumBooleanMember',
2057
2165
  id: asDetachedNodeForCodeGen(props.id),
2058
2166
  init: asDetachedNodeForCodeGen(props.init),
2059
2167
  },
2060
2168
  );
2061
- setParentPointersInDirectChildren((node: $FlowFixMe));
2169
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2062
2170
  return node;
2063
2171
  }
2064
2172
 
2065
2173
  export function EnumDeclaration(props: {
2066
2174
  ...EnumDeclarationProps,
2067
- +parent?: ESNode,
2175
+ readonly parent?: ESNode,
2068
2176
  }): DetachedNode<EnumDeclarationType> {
2069
- const node = detachedProps<EnumDeclarationType>((props.parent: $FlowFixMe), {
2177
+ const node = detachedProps<EnumDeclarationType>(props.parent as $FlowFixMe, {
2070
2178
  type: 'EnumDeclaration',
2071
2179
  id: asDetachedNodeForCodeGen(props.id),
2072
2180
  body: asDetachedNodeForCodeGen(props.body),
2073
2181
  });
2074
- setParentPointersInDirectChildren((node: $FlowFixMe));
2182
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2075
2183
  return node;
2076
2184
  }
2077
2185
 
2078
2186
  export function EnumDefaultedMember(props: {
2079
2187
  ...EnumDefaultedMemberProps,
2080
- +parent?: ESNode,
2188
+ readonly parent?: ESNode,
2081
2189
  }): DetachedNode<EnumDefaultedMemberType> {
2082
2190
  const node = detachedProps<EnumDefaultedMemberType>(
2083
- (props.parent: $FlowFixMe),
2191
+ props.parent as $FlowFixMe,
2084
2192
  {
2085
2193
  type: 'EnumDefaultedMember',
2086
2194
  id: asDetachedNodeForCodeGen(props.id),
2087
2195
  },
2088
2196
  );
2089
- setParentPointersInDirectChildren((node: $FlowFixMe));
2197
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2090
2198
  return node;
2091
2199
  }
2092
2200
 
2093
2201
  export function EnumNumberBody(props: {
2094
2202
  ...EnumNumberBodyProps,
2095
- +parent?: ESNode,
2203
+ readonly parent?: ESNode,
2096
2204
  }): DetachedNode<EnumNumberBodyType> {
2097
- const node = detachedProps<EnumNumberBodyType>((props.parent: $FlowFixMe), {
2205
+ const node = detachedProps<EnumNumberBodyType>(props.parent as $FlowFixMe, {
2098
2206
  type: 'EnumNumberBody',
2099
2207
  members: props.members.map(n => asDetachedNodeForCodeGen(n)),
2100
2208
  explicitType: props.explicitType,
2101
2209
  hasUnknownMembers: props.hasUnknownMembers,
2102
2210
  });
2103
- setParentPointersInDirectChildren((node: $FlowFixMe));
2211
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2104
2212
  return node;
2105
2213
  }
2106
2214
 
2107
2215
  export function EnumNumberMember(props: {
2108
2216
  ...EnumNumberMemberProps,
2109
- +parent?: ESNode,
2217
+ readonly parent?: ESNode,
2110
2218
  }): DetachedNode<EnumNumberMemberType> {
2111
- const node = detachedProps<EnumNumberMemberType>((props.parent: $FlowFixMe), {
2219
+ const node = detachedProps<EnumNumberMemberType>(props.parent as $FlowFixMe, {
2112
2220
  type: 'EnumNumberMember',
2113
2221
  id: asDetachedNodeForCodeGen(props.id),
2114
2222
  init: asDetachedNodeForCodeGen(props.init),
2115
2223
  });
2116
- setParentPointersInDirectChildren((node: $FlowFixMe));
2224
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2117
2225
  return node;
2118
2226
  }
2119
2227
 
2120
2228
  export function EnumStringBody(props: {
2121
2229
  ...EnumStringBodyProps,
2122
- +parent?: ESNode,
2230
+ readonly parent?: ESNode,
2123
2231
  }): DetachedNode<EnumStringBodyType> {
2124
- const node = detachedProps<EnumStringBodyType>((props.parent: $FlowFixMe), {
2232
+ const node = detachedProps<EnumStringBodyType>(props.parent as $FlowFixMe, {
2125
2233
  type: 'EnumStringBody',
2126
2234
  members: props.members.map(n => asDetachedNodeForCodeGen(n)),
2127
2235
  explicitType: props.explicitType,
2128
2236
  hasUnknownMembers: props.hasUnknownMembers,
2129
2237
  });
2130
- setParentPointersInDirectChildren((node: $FlowFixMe));
2238
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2131
2239
  return node;
2132
2240
  }
2133
2241
 
2134
2242
  export function EnumStringMember(props: {
2135
2243
  ...EnumStringMemberProps,
2136
- +parent?: ESNode,
2244
+ readonly parent?: ESNode,
2137
2245
  }): DetachedNode<EnumStringMemberType> {
2138
- const node = detachedProps<EnumStringMemberType>((props.parent: $FlowFixMe), {
2246
+ const node = detachedProps<EnumStringMemberType>(props.parent as $FlowFixMe, {
2139
2247
  type: 'EnumStringMember',
2140
2248
  id: asDetachedNodeForCodeGen(props.id),
2141
2249
  init: asDetachedNodeForCodeGen(props.init),
2142
2250
  });
2143
- setParentPointersInDirectChildren((node: $FlowFixMe));
2251
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2144
2252
  return node;
2145
2253
  }
2146
2254
 
2147
2255
  export function EnumSymbolBody(props: {
2148
2256
  ...EnumSymbolBodyProps,
2149
- +parent?: ESNode,
2257
+ readonly parent?: ESNode,
2150
2258
  }): DetachedNode<EnumSymbolBodyType> {
2151
- const node = detachedProps<EnumSymbolBodyType>((props.parent: $FlowFixMe), {
2259
+ const node = detachedProps<EnumSymbolBodyType>(props.parent as $FlowFixMe, {
2152
2260
  type: 'EnumSymbolBody',
2153
2261
  members: props.members.map(n => asDetachedNodeForCodeGen(n)),
2154
2262
  hasUnknownMembers: props.hasUnknownMembers,
2155
2263
  });
2156
- setParentPointersInDirectChildren((node: $FlowFixMe));
2264
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2157
2265
  return node;
2158
2266
  }
2159
2267
 
2160
2268
  export function ExistsTypeAnnotation(
2161
2269
  props: {
2162
- +parent?: ESNode,
2270
+ readonly parent?: ESNode,
2163
2271
  } = {...null},
2164
2272
  ): DetachedNode<ExistsTypeAnnotationType> {
2165
- return detachedProps<ExistsTypeAnnotationType>((props.parent: $FlowFixMe), {
2273
+ return detachedProps<ExistsTypeAnnotationType>(props.parent as $FlowFixMe, {
2166
2274
  type: 'ExistsTypeAnnotation',
2167
2275
  });
2168
2276
  }
2169
2277
 
2170
2278
  export function ExportAllDeclaration(props: {
2171
2279
  ...ExportAllDeclarationProps,
2172
- +parent?: ESNode,
2280
+ readonly parent?: ESNode,
2173
2281
  }): DetachedNode<ExportAllDeclarationType> {
2174
2282
  const node = detachedProps<ExportAllDeclarationType>(
2175
- (props.parent: $FlowFixMe),
2283
+ props.parent as $FlowFixMe,
2176
2284
  {
2177
2285
  type: 'ExportAllDeclaration',
2178
2286
  exported: asDetachedNodeForCodeGen(props.exported),
@@ -2180,104 +2288,104 @@ export function ExportAllDeclaration(props: {
2180
2288
  exportKind: props.exportKind,
2181
2289
  },
2182
2290
  );
2183
- setParentPointersInDirectChildren((node: $FlowFixMe));
2291
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2184
2292
  return node;
2185
2293
  }
2186
2294
 
2187
2295
  export function ExportDefaultDeclaration(props: {
2188
2296
  ...ExportDefaultDeclarationProps,
2189
- +parent?: ESNode,
2297
+ readonly parent?: ESNode,
2190
2298
  }): DetachedNode<ExportDefaultDeclarationType> {
2191
2299
  const node = detachedProps<ExportDefaultDeclarationType>(
2192
- (props.parent: $FlowFixMe),
2300
+ props.parent as $FlowFixMe,
2193
2301
  {
2194
2302
  type: 'ExportDefaultDeclaration',
2195
2303
  declaration: asDetachedNodeForCodeGen(props.declaration),
2196
2304
  },
2197
2305
  );
2198
- setParentPointersInDirectChildren((node: $FlowFixMe));
2306
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2199
2307
  return node;
2200
2308
  }
2201
2309
 
2202
2310
  export function ExportSpecifier(props: {
2203
2311
  ...ExportSpecifierProps,
2204
- +parent?: ESNode,
2312
+ readonly parent?: ESNode,
2205
2313
  }): DetachedNode<ExportSpecifierType> {
2206
- const node = detachedProps<ExportSpecifierType>((props.parent: $FlowFixMe), {
2314
+ const node = detachedProps<ExportSpecifierType>(props.parent as $FlowFixMe, {
2207
2315
  type: 'ExportSpecifier',
2208
2316
  exported: asDetachedNodeForCodeGen(props.exported),
2209
2317
  local: asDetachedNodeForCodeGen(props.local),
2210
2318
  });
2211
- setParentPointersInDirectChildren((node: $FlowFixMe));
2319
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2212
2320
  return node;
2213
2321
  }
2214
2322
 
2215
2323
  export function ExpressionStatement(props: {
2216
2324
  ...ExpressionStatementProps,
2217
- +parent?: ESNode,
2325
+ readonly parent?: ESNode,
2218
2326
  }): DetachedNode<ExpressionStatementType> {
2219
2327
  const node = detachedProps<ExpressionStatementType>(
2220
- (props.parent: $FlowFixMe),
2328
+ props.parent as $FlowFixMe,
2221
2329
  {
2222
2330
  type: 'ExpressionStatement',
2223
2331
  expression: asDetachedNodeForCodeGen(props.expression),
2224
2332
  directive: props.directive,
2225
2333
  },
2226
2334
  );
2227
- setParentPointersInDirectChildren((node: $FlowFixMe));
2335
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2228
2336
  return node;
2229
2337
  }
2230
2338
 
2231
2339
  export function ForInStatement(props: {
2232
2340
  ...ForInStatementProps,
2233
- +parent?: ESNode,
2341
+ readonly parent?: ESNode,
2234
2342
  }): DetachedNode<ForInStatementType> {
2235
- const node = detachedProps<ForInStatementType>((props.parent: $FlowFixMe), {
2343
+ const node = detachedProps<ForInStatementType>(props.parent as $FlowFixMe, {
2236
2344
  type: 'ForInStatement',
2237
2345
  left: asDetachedNodeForCodeGen(props.left),
2238
2346
  right: asDetachedNodeForCodeGen(props.right),
2239
2347
  body: asDetachedNodeForCodeGen(props.body),
2240
2348
  });
2241
- setParentPointersInDirectChildren((node: $FlowFixMe));
2349
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2242
2350
  return node;
2243
2351
  }
2244
2352
 
2245
2353
  export function ForOfStatement(props: {
2246
2354
  ...ForOfStatementProps,
2247
- +parent?: ESNode,
2355
+ readonly parent?: ESNode,
2248
2356
  }): DetachedNode<ForOfStatementType> {
2249
- const node = detachedProps<ForOfStatementType>((props.parent: $FlowFixMe), {
2357
+ const node = detachedProps<ForOfStatementType>(props.parent as $FlowFixMe, {
2250
2358
  type: 'ForOfStatement',
2251
2359
  left: asDetachedNodeForCodeGen(props.left),
2252
2360
  right: asDetachedNodeForCodeGen(props.right),
2253
2361
  body: asDetachedNodeForCodeGen(props.body),
2254
2362
  await: props.await,
2255
2363
  });
2256
- setParentPointersInDirectChildren((node: $FlowFixMe));
2364
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2257
2365
  return node;
2258
2366
  }
2259
2367
 
2260
2368
  export function ForStatement(props: {
2261
2369
  ...ForStatementProps,
2262
- +parent?: ESNode,
2370
+ readonly parent?: ESNode,
2263
2371
  }): DetachedNode<ForStatementType> {
2264
- const node = detachedProps<ForStatementType>((props.parent: $FlowFixMe), {
2372
+ const node = detachedProps<ForStatementType>(props.parent as $FlowFixMe, {
2265
2373
  type: 'ForStatement',
2266
2374
  init: asDetachedNodeForCodeGen(props.init),
2267
2375
  test: asDetachedNodeForCodeGen(props.test),
2268
2376
  update: asDetachedNodeForCodeGen(props.update),
2269
2377
  body: asDetachedNodeForCodeGen(props.body),
2270
2378
  });
2271
- setParentPointersInDirectChildren((node: $FlowFixMe));
2379
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2272
2380
  return node;
2273
2381
  }
2274
2382
 
2275
2383
  export function FunctionDeclaration(props: {
2276
2384
  ...FunctionDeclarationProps,
2277
- +parent?: ESNode,
2385
+ readonly parent?: ESNode,
2278
2386
  }): DetachedNode<FunctionDeclarationType> {
2279
2387
  const node = detachedProps<FunctionDeclarationType>(
2280
- (props.parent: $FlowFixMe),
2388
+ props.parent as $FlowFixMe,
2281
2389
  {
2282
2390
  type: 'FunctionDeclaration',
2283
2391
  id: asDetachedNodeForCodeGen(props.id),
@@ -2290,16 +2398,16 @@ export function FunctionDeclaration(props: {
2290
2398
  async: props.async,
2291
2399
  },
2292
2400
  );
2293
- setParentPointersInDirectChildren((node: $FlowFixMe));
2401
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2294
2402
  return node;
2295
2403
  }
2296
2404
 
2297
2405
  export function FunctionExpression(props: {
2298
2406
  ...FunctionExpressionProps,
2299
- +parent?: ESNode,
2407
+ readonly parent?: ESNode,
2300
2408
  }): DetachedNode<FunctionExpressionType> {
2301
2409
  const node = detachedProps<FunctionExpressionType>(
2302
- (props.parent: $FlowFixMe),
2410
+ props.parent as $FlowFixMe,
2303
2411
  {
2304
2412
  type: 'FunctionExpression',
2305
2413
  id: asDetachedNodeForCodeGen(props.id),
@@ -2312,16 +2420,16 @@ export function FunctionExpression(props: {
2312
2420
  async: props.async,
2313
2421
  },
2314
2422
  );
2315
- setParentPointersInDirectChildren((node: $FlowFixMe));
2423
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2316
2424
  return node;
2317
2425
  }
2318
2426
 
2319
2427
  export function FunctionTypeAnnotation(props: {
2320
2428
  ...FunctionTypeAnnotationProps,
2321
- +parent?: ESNode,
2429
+ readonly parent?: ESNode,
2322
2430
  }): DetachedNode<FunctionTypeAnnotationType> {
2323
2431
  const node = detachedProps<FunctionTypeAnnotationType>(
2324
- (props.parent: $FlowFixMe),
2432
+ props.parent as $FlowFixMe,
2325
2433
  {
2326
2434
  type: 'FunctionTypeAnnotation',
2327
2435
  params: props.params.map(n => asDetachedNodeForCodeGen(n)),
@@ -2331,16 +2439,16 @@ export function FunctionTypeAnnotation(props: {
2331
2439
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
2332
2440
  },
2333
2441
  );
2334
- setParentPointersInDirectChildren((node: $FlowFixMe));
2442
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2335
2443
  return node;
2336
2444
  }
2337
2445
 
2338
2446
  export function FunctionTypeParam(props: {
2339
2447
  ...FunctionTypeParamProps,
2340
- +parent?: ESNode,
2448
+ readonly parent?: ESNode,
2341
2449
  }): DetachedNode<FunctionTypeParamType> {
2342
2450
  const node = detachedProps<FunctionTypeParamType>(
2343
- (props.parent: $FlowFixMe),
2451
+ props.parent as $FlowFixMe,
2344
2452
  {
2345
2453
  type: 'FunctionTypeParam',
2346
2454
  name: asDetachedNodeForCodeGen(props.name),
@@ -2348,31 +2456,31 @@ export function FunctionTypeParam(props: {
2348
2456
  optional: props.optional,
2349
2457
  },
2350
2458
  );
2351
- setParentPointersInDirectChildren((node: $FlowFixMe));
2459
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2352
2460
  return node;
2353
2461
  }
2354
2462
 
2355
2463
  export function GenericTypeAnnotation(props: {
2356
2464
  ...GenericTypeAnnotationProps,
2357
- +parent?: ESNode,
2465
+ readonly parent?: ESNode,
2358
2466
  }): DetachedNode<GenericTypeAnnotationType> {
2359
2467
  const node = detachedProps<GenericTypeAnnotationType>(
2360
- (props.parent: $FlowFixMe),
2468
+ props.parent as $FlowFixMe,
2361
2469
  {
2362
2470
  type: 'GenericTypeAnnotation',
2363
2471
  id: asDetachedNodeForCodeGen(props.id),
2364
2472
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
2365
2473
  },
2366
2474
  );
2367
- setParentPointersInDirectChildren((node: $FlowFixMe));
2475
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2368
2476
  return node;
2369
2477
  }
2370
2478
 
2371
2479
  export function HookDeclaration(props: {
2372
2480
  ...HookDeclarationProps,
2373
- +parent?: ESNode,
2481
+ readonly parent?: ESNode,
2374
2482
  }): DetachedNode<HookDeclarationType> {
2375
- const node = detachedProps<HookDeclarationType>((props.parent: $FlowFixMe), {
2483
+ const node = detachedProps<HookDeclarationType>(props.parent as $FlowFixMe, {
2376
2484
  type: 'HookDeclaration',
2377
2485
  id: asDetachedNodeForCodeGen(props.id),
2378
2486
  params: props.params.map(n => asDetachedNodeForCodeGen(n)),
@@ -2381,16 +2489,16 @@ export function HookDeclaration(props: {
2381
2489
  returnType: asDetachedNodeForCodeGen(props.returnType),
2382
2490
  async: props.async,
2383
2491
  });
2384
- setParentPointersInDirectChildren((node: $FlowFixMe));
2492
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2385
2493
  return node;
2386
2494
  }
2387
2495
 
2388
2496
  export function HookTypeAnnotation(props: {
2389
2497
  ...HookTypeAnnotationProps,
2390
- +parent?: ESNode,
2498
+ readonly parent?: ESNode,
2391
2499
  }): DetachedNode<HookTypeAnnotationType> {
2392
2500
  const node = detachedProps<HookTypeAnnotationType>(
2393
- (props.parent: $FlowFixMe),
2501
+ props.parent as $FlowFixMe,
2394
2502
  {
2395
2503
  type: 'HookTypeAnnotation',
2396
2504
  params: props.params.map(n => asDetachedNodeForCodeGen(n)),
@@ -2399,43 +2507,43 @@ export function HookTypeAnnotation(props: {
2399
2507
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
2400
2508
  },
2401
2509
  );
2402
- setParentPointersInDirectChildren((node: $FlowFixMe));
2510
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2403
2511
  return node;
2404
2512
  }
2405
2513
 
2406
2514
  export function IfStatement(props: {
2407
2515
  ...IfStatementProps,
2408
- +parent?: ESNode,
2516
+ readonly parent?: ESNode,
2409
2517
  }): DetachedNode<IfStatementType> {
2410
- const node = detachedProps<IfStatementType>((props.parent: $FlowFixMe), {
2518
+ const node = detachedProps<IfStatementType>(props.parent as $FlowFixMe, {
2411
2519
  type: 'IfStatement',
2412
2520
  test: asDetachedNodeForCodeGen(props.test),
2413
2521
  consequent: asDetachedNodeForCodeGen(props.consequent),
2414
2522
  alternate: asDetachedNodeForCodeGen(props.alternate),
2415
2523
  });
2416
- setParentPointersInDirectChildren((node: $FlowFixMe));
2524
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2417
2525
  return node;
2418
2526
  }
2419
2527
 
2420
2528
  export function ImportAttribute(props: {
2421
2529
  ...ImportAttributeProps,
2422
- +parent?: ESNode,
2530
+ readonly parent?: ESNode,
2423
2531
  }): DetachedNode<ImportAttributeType> {
2424
- const node = detachedProps<ImportAttributeType>((props.parent: $FlowFixMe), {
2532
+ const node = detachedProps<ImportAttributeType>(props.parent as $FlowFixMe, {
2425
2533
  type: 'ImportAttribute',
2426
2534
  key: asDetachedNodeForCodeGen(props.key),
2427
2535
  value: asDetachedNodeForCodeGen(props.value),
2428
2536
  });
2429
- setParentPointersInDirectChildren((node: $FlowFixMe));
2537
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2430
2538
  return node;
2431
2539
  }
2432
2540
 
2433
2541
  export function ImportDeclaration(props: {
2434
2542
  ...ImportDeclarationProps,
2435
- +parent?: ESNode,
2543
+ readonly parent?: ESNode,
2436
2544
  }): DetachedNode<ImportDeclarationType> {
2437
2545
  const node = detachedProps<ImportDeclarationType>(
2438
- (props.parent: $FlowFixMe),
2546
+ props.parent as $FlowFixMe,
2439
2547
  {
2440
2548
  type: 'ImportDeclaration',
2441
2549
  specifiers: props.specifiers.map(n => asDetachedNodeForCodeGen(n)),
@@ -2444,114 +2552,114 @@ export function ImportDeclaration(props: {
2444
2552
  importKind: props.importKind,
2445
2553
  },
2446
2554
  );
2447
- setParentPointersInDirectChildren((node: $FlowFixMe));
2555
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2448
2556
  return node;
2449
2557
  }
2450
2558
 
2451
2559
  export function ImportDefaultSpecifier(props: {
2452
2560
  ...ImportDefaultSpecifierProps,
2453
- +parent?: ESNode,
2561
+ readonly parent?: ESNode,
2454
2562
  }): DetachedNode<ImportDefaultSpecifierType> {
2455
2563
  const node = detachedProps<ImportDefaultSpecifierType>(
2456
- (props.parent: $FlowFixMe),
2564
+ props.parent as $FlowFixMe,
2457
2565
  {
2458
2566
  type: 'ImportDefaultSpecifier',
2459
2567
  local: asDetachedNodeForCodeGen(props.local),
2460
2568
  },
2461
2569
  );
2462
- setParentPointersInDirectChildren((node: $FlowFixMe));
2570
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2463
2571
  return node;
2464
2572
  }
2465
2573
 
2466
2574
  export function ImportExpression(props: {
2467
2575
  ...ImportExpressionProps,
2468
- +parent?: ESNode,
2576
+ readonly parent?: ESNode,
2469
2577
  }): DetachedNode<ImportExpressionType> {
2470
- const node = detachedProps<ImportExpressionType>((props.parent: $FlowFixMe), {
2578
+ const node = detachedProps<ImportExpressionType>(props.parent as $FlowFixMe, {
2471
2579
  type: 'ImportExpression',
2472
2580
  source: asDetachedNodeForCodeGen(props.source),
2473
2581
  options: asDetachedNodeForCodeGen(props.options),
2474
2582
  });
2475
- setParentPointersInDirectChildren((node: $FlowFixMe));
2583
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2476
2584
  return node;
2477
2585
  }
2478
2586
 
2479
2587
  export function ImportNamespaceSpecifier(props: {
2480
2588
  ...ImportNamespaceSpecifierProps,
2481
- +parent?: ESNode,
2589
+ readonly parent?: ESNode,
2482
2590
  }): DetachedNode<ImportNamespaceSpecifierType> {
2483
2591
  const node = detachedProps<ImportNamespaceSpecifierType>(
2484
- (props.parent: $FlowFixMe),
2592
+ props.parent as $FlowFixMe,
2485
2593
  {
2486
2594
  type: 'ImportNamespaceSpecifier',
2487
2595
  local: asDetachedNodeForCodeGen(props.local),
2488
2596
  },
2489
2597
  );
2490
- setParentPointersInDirectChildren((node: $FlowFixMe));
2598
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2491
2599
  return node;
2492
2600
  }
2493
2601
 
2494
2602
  export function ImportSpecifier(props: {
2495
2603
  ...ImportSpecifierProps,
2496
- +parent?: ESNode,
2604
+ readonly parent?: ESNode,
2497
2605
  }): DetachedNode<ImportSpecifierType> {
2498
- const node = detachedProps<ImportSpecifierType>((props.parent: $FlowFixMe), {
2606
+ const node = detachedProps<ImportSpecifierType>(props.parent as $FlowFixMe, {
2499
2607
  type: 'ImportSpecifier',
2500
2608
  imported: asDetachedNodeForCodeGen(props.imported),
2501
2609
  local: asDetachedNodeForCodeGen(props.local),
2502
2610
  importKind: props.importKind,
2503
2611
  });
2504
- setParentPointersInDirectChildren((node: $FlowFixMe));
2612
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2505
2613
  return node;
2506
2614
  }
2507
2615
 
2508
2616
  export function IndexedAccessType(props: {
2509
2617
  ...IndexedAccessTypeProps,
2510
- +parent?: ESNode,
2618
+ readonly parent?: ESNode,
2511
2619
  }): DetachedNode<IndexedAccessTypeType> {
2512
2620
  const node = detachedProps<IndexedAccessTypeType>(
2513
- (props.parent: $FlowFixMe),
2621
+ props.parent as $FlowFixMe,
2514
2622
  {
2515
2623
  type: 'IndexedAccessType',
2516
2624
  objectType: asDetachedNodeForCodeGen(props.objectType),
2517
2625
  indexType: asDetachedNodeForCodeGen(props.indexType),
2518
2626
  },
2519
2627
  );
2520
- setParentPointersInDirectChildren((node: $FlowFixMe));
2628
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2521
2629
  return node;
2522
2630
  }
2523
2631
 
2524
2632
  export function InferredPredicate(
2525
2633
  props: {
2526
- +parent?: ESNode,
2634
+ readonly parent?: ESNode,
2527
2635
  } = {...null},
2528
2636
  ): DetachedNode<InferredPredicateType> {
2529
- return detachedProps<InferredPredicateType>((props.parent: $FlowFixMe), {
2637
+ return detachedProps<InferredPredicateType>(props.parent as $FlowFixMe, {
2530
2638
  type: 'InferredPredicate',
2531
2639
  });
2532
2640
  }
2533
2641
 
2534
2642
  export function InferTypeAnnotation(props: {
2535
2643
  ...InferTypeAnnotationProps,
2536
- +parent?: ESNode,
2644
+ readonly parent?: ESNode,
2537
2645
  }): DetachedNode<InferTypeAnnotationType> {
2538
2646
  const node = detachedProps<InferTypeAnnotationType>(
2539
- (props.parent: $FlowFixMe),
2647
+ props.parent as $FlowFixMe,
2540
2648
  {
2541
2649
  type: 'InferTypeAnnotation',
2542
2650
  typeParameter: asDetachedNodeForCodeGen(props.typeParameter),
2543
2651
  },
2544
2652
  );
2545
- setParentPointersInDirectChildren((node: $FlowFixMe));
2653
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2546
2654
  return node;
2547
2655
  }
2548
2656
 
2549
2657
  export function InterfaceDeclaration(props: {
2550
2658
  ...InterfaceDeclarationProps,
2551
- +parent?: ESNode,
2659
+ readonly parent?: ESNode,
2552
2660
  }): DetachedNode<InterfaceDeclarationType> {
2553
2661
  const node = detachedProps<InterfaceDeclarationType>(
2554
- (props.parent: $FlowFixMe),
2662
+ props.parent as $FlowFixMe,
2555
2663
  {
2556
2664
  type: 'InterfaceDeclaration',
2557
2665
  id: asDetachedNodeForCodeGen(props.id),
@@ -2560,195 +2668,195 @@ export function InterfaceDeclaration(props: {
2560
2668
  body: asDetachedNodeForCodeGen(props.body),
2561
2669
  },
2562
2670
  );
2563
- setParentPointersInDirectChildren((node: $FlowFixMe));
2671
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2564
2672
  return node;
2565
2673
  }
2566
2674
 
2567
2675
  export function InterfaceExtends(props: {
2568
2676
  ...InterfaceExtendsProps,
2569
- +parent?: ESNode,
2677
+ readonly parent?: ESNode,
2570
2678
  }): DetachedNode<InterfaceExtendsType> {
2571
- const node = detachedProps<InterfaceExtendsType>((props.parent: $FlowFixMe), {
2679
+ const node = detachedProps<InterfaceExtendsType>(props.parent as $FlowFixMe, {
2572
2680
  type: 'InterfaceExtends',
2573
2681
  id: asDetachedNodeForCodeGen(props.id),
2574
2682
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
2575
2683
  });
2576
- setParentPointersInDirectChildren((node: $FlowFixMe));
2684
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2577
2685
  return node;
2578
2686
  }
2579
2687
 
2580
2688
  export function InterfaceTypeAnnotation(props: {
2581
2689
  ...InterfaceTypeAnnotationProps,
2582
- +parent?: ESNode,
2690
+ readonly parent?: ESNode,
2583
2691
  }): DetachedNode<InterfaceTypeAnnotationType> {
2584
2692
  const node = detachedProps<InterfaceTypeAnnotationType>(
2585
- (props.parent: $FlowFixMe),
2693
+ props.parent as $FlowFixMe,
2586
2694
  {
2587
2695
  type: 'InterfaceTypeAnnotation',
2588
2696
  extends: props.extends.map(n => asDetachedNodeForCodeGen(n)),
2589
2697
  body: asDetachedNodeForCodeGen(props.body),
2590
2698
  },
2591
2699
  );
2592
- setParentPointersInDirectChildren((node: $FlowFixMe));
2700
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2593
2701
  return node;
2594
2702
  }
2595
2703
 
2596
2704
  export function IntersectionTypeAnnotation(props: {
2597
2705
  ...IntersectionTypeAnnotationProps,
2598
- +parent?: ESNode,
2706
+ readonly parent?: ESNode,
2599
2707
  }): DetachedNode<IntersectionTypeAnnotationType> {
2600
2708
  const node = detachedProps<IntersectionTypeAnnotationType>(
2601
- (props.parent: $FlowFixMe),
2709
+ props.parent as $FlowFixMe,
2602
2710
  {
2603
2711
  type: 'IntersectionTypeAnnotation',
2604
2712
  types: props.types.map(n => asDetachedNodeForCodeGen(n)),
2605
2713
  },
2606
2714
  );
2607
- setParentPointersInDirectChildren((node: $FlowFixMe));
2715
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2608
2716
  return node;
2609
2717
  }
2610
2718
 
2611
2719
  export function JSXAttribute(props: {
2612
2720
  ...JSXAttributeProps,
2613
- +parent?: ESNode,
2721
+ readonly parent?: ESNode,
2614
2722
  }): DetachedNode<JSXAttributeType> {
2615
- const node = detachedProps<JSXAttributeType>((props.parent: $FlowFixMe), {
2723
+ const node = detachedProps<JSXAttributeType>(props.parent as $FlowFixMe, {
2616
2724
  type: 'JSXAttribute',
2617
2725
  name: asDetachedNodeForCodeGen(props.name),
2618
2726
  value: asDetachedNodeForCodeGen(props.value),
2619
2727
  });
2620
- setParentPointersInDirectChildren((node: $FlowFixMe));
2728
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2621
2729
  return node;
2622
2730
  }
2623
2731
 
2624
2732
  export function JSXClosingElement(props: {
2625
2733
  ...JSXClosingElementProps,
2626
- +parent?: ESNode,
2734
+ readonly parent?: ESNode,
2627
2735
  }): DetachedNode<JSXClosingElementType> {
2628
2736
  const node = detachedProps<JSXClosingElementType>(
2629
- (props.parent: $FlowFixMe),
2737
+ props.parent as $FlowFixMe,
2630
2738
  {
2631
2739
  type: 'JSXClosingElement',
2632
2740
  name: asDetachedNodeForCodeGen(props.name),
2633
2741
  },
2634
2742
  );
2635
- setParentPointersInDirectChildren((node: $FlowFixMe));
2743
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2636
2744
  return node;
2637
2745
  }
2638
2746
 
2639
2747
  export function JSXClosingFragment(
2640
2748
  props: {
2641
- +parent?: ESNode,
2749
+ readonly parent?: ESNode,
2642
2750
  } = {...null},
2643
2751
  ): DetachedNode<JSXClosingFragmentType> {
2644
- return detachedProps<JSXClosingFragmentType>((props.parent: $FlowFixMe), {
2752
+ return detachedProps<JSXClosingFragmentType>(props.parent as $FlowFixMe, {
2645
2753
  type: 'JSXClosingFragment',
2646
2754
  });
2647
2755
  }
2648
2756
 
2649
2757
  export function JSXElement(props: {
2650
2758
  ...JSXElementProps,
2651
- +parent?: ESNode,
2759
+ readonly parent?: ESNode,
2652
2760
  }): DetachedNode<JSXElementType> {
2653
- const node = detachedProps<JSXElementType>((props.parent: $FlowFixMe), {
2761
+ const node = detachedProps<JSXElementType>(props.parent as $FlowFixMe, {
2654
2762
  type: 'JSXElement',
2655
2763
  openingElement: asDetachedNodeForCodeGen(props.openingElement),
2656
2764
  children: props.children.map(n => asDetachedNodeForCodeGen(n)),
2657
2765
  closingElement: asDetachedNodeForCodeGen(props.closingElement),
2658
2766
  });
2659
- setParentPointersInDirectChildren((node: $FlowFixMe));
2767
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2660
2768
  return node;
2661
2769
  }
2662
2770
 
2663
2771
  export function JSXEmptyExpression(
2664
2772
  props: {
2665
- +parent?: ESNode,
2773
+ readonly parent?: ESNode,
2666
2774
  } = {...null},
2667
2775
  ): DetachedNode<JSXEmptyExpressionType> {
2668
- return detachedProps<JSXEmptyExpressionType>((props.parent: $FlowFixMe), {
2776
+ return detachedProps<JSXEmptyExpressionType>(props.parent as $FlowFixMe, {
2669
2777
  type: 'JSXEmptyExpression',
2670
2778
  });
2671
2779
  }
2672
2780
 
2673
2781
  export function JSXExpressionContainer(props: {
2674
2782
  ...JSXExpressionContainerProps,
2675
- +parent?: ESNode,
2783
+ readonly parent?: ESNode,
2676
2784
  }): DetachedNode<JSXExpressionContainerType> {
2677
2785
  const node = detachedProps<JSXExpressionContainerType>(
2678
- (props.parent: $FlowFixMe),
2786
+ props.parent as $FlowFixMe,
2679
2787
  {
2680
2788
  type: 'JSXExpressionContainer',
2681
2789
  expression: asDetachedNodeForCodeGen(props.expression),
2682
2790
  },
2683
2791
  );
2684
- setParentPointersInDirectChildren((node: $FlowFixMe));
2792
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2685
2793
  return node;
2686
2794
  }
2687
2795
 
2688
2796
  export function JSXFragment(props: {
2689
2797
  ...JSXFragmentProps,
2690
- +parent?: ESNode,
2798
+ readonly parent?: ESNode,
2691
2799
  }): DetachedNode<JSXFragmentType> {
2692
- const node = detachedProps<JSXFragmentType>((props.parent: $FlowFixMe), {
2800
+ const node = detachedProps<JSXFragmentType>(props.parent as $FlowFixMe, {
2693
2801
  type: 'JSXFragment',
2694
2802
  openingFragment: asDetachedNodeForCodeGen(props.openingFragment),
2695
2803
  children: props.children.map(n => asDetachedNodeForCodeGen(n)),
2696
2804
  closingFragment: asDetachedNodeForCodeGen(props.closingFragment),
2697
2805
  });
2698
- setParentPointersInDirectChildren((node: $FlowFixMe));
2806
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2699
2807
  return node;
2700
2808
  }
2701
2809
 
2702
2810
  export function JSXIdentifier(props: {
2703
2811
  ...JSXIdentifierProps,
2704
- +parent?: ESNode,
2812
+ readonly parent?: ESNode,
2705
2813
  }): DetachedNode<JSXIdentifierType> {
2706
- const node = detachedProps<JSXIdentifierType>((props.parent: $FlowFixMe), {
2814
+ const node = detachedProps<JSXIdentifierType>(props.parent as $FlowFixMe, {
2707
2815
  type: 'JSXIdentifier',
2708
2816
  name: props.name,
2709
2817
  });
2710
- setParentPointersInDirectChildren((node: $FlowFixMe));
2818
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2711
2819
  return node;
2712
2820
  }
2713
2821
 
2714
2822
  export function JSXMemberExpression(props: {
2715
2823
  ...JSXMemberExpressionProps,
2716
- +parent?: ESNode,
2824
+ readonly parent?: ESNode,
2717
2825
  }): DetachedNode<JSXMemberExpressionType> {
2718
2826
  const node = detachedProps<JSXMemberExpressionType>(
2719
- (props.parent: $FlowFixMe),
2827
+ props.parent as $FlowFixMe,
2720
2828
  {
2721
2829
  type: 'JSXMemberExpression',
2722
2830
  object: asDetachedNodeForCodeGen(props.object),
2723
2831
  property: asDetachedNodeForCodeGen(props.property),
2724
2832
  },
2725
2833
  );
2726
- setParentPointersInDirectChildren((node: $FlowFixMe));
2834
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2727
2835
  return node;
2728
2836
  }
2729
2837
 
2730
2838
  export function JSXNamespacedName(props: {
2731
2839
  ...JSXNamespacedNameProps,
2732
- +parent?: ESNode,
2840
+ readonly parent?: ESNode,
2733
2841
  }): DetachedNode<JSXNamespacedNameType> {
2734
2842
  const node = detachedProps<JSXNamespacedNameType>(
2735
- (props.parent: $FlowFixMe),
2843
+ props.parent as $FlowFixMe,
2736
2844
  {
2737
2845
  type: 'JSXNamespacedName',
2738
2846
  namespace: asDetachedNodeForCodeGen(props.namespace),
2739
2847
  name: asDetachedNodeForCodeGen(props.name),
2740
2848
  },
2741
2849
  );
2742
- setParentPointersInDirectChildren((node: $FlowFixMe));
2850
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2743
2851
  return node;
2744
2852
  }
2745
2853
 
2746
2854
  export function JSXOpeningElement(props: {
2747
2855
  ...JSXOpeningElementProps,
2748
- +parent?: ESNode,
2856
+ readonly parent?: ESNode,
2749
2857
  }): DetachedNode<JSXOpeningElementType> {
2750
2858
  const node = detachedProps<JSXOpeningElementType>(
2751
- (props.parent: $FlowFixMe),
2859
+ props.parent as $FlowFixMe,
2752
2860
  {
2753
2861
  type: 'JSXOpeningElement',
2754
2862
  name: asDetachedNodeForCodeGen(props.name),
@@ -2757,94 +2865,94 @@ export function JSXOpeningElement(props: {
2757
2865
  typeArguments: asDetachedNodeForCodeGen(props.typeArguments),
2758
2866
  },
2759
2867
  );
2760
- setParentPointersInDirectChildren((node: $FlowFixMe));
2868
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2761
2869
  return node;
2762
2870
  }
2763
2871
 
2764
2872
  export function JSXOpeningFragment(
2765
2873
  props: {
2766
- +parent?: ESNode,
2874
+ readonly parent?: ESNode,
2767
2875
  } = {...null},
2768
2876
  ): DetachedNode<JSXOpeningFragmentType> {
2769
- return detachedProps<JSXOpeningFragmentType>((props.parent: $FlowFixMe), {
2877
+ return detachedProps<JSXOpeningFragmentType>(props.parent as $FlowFixMe, {
2770
2878
  type: 'JSXOpeningFragment',
2771
2879
  });
2772
2880
  }
2773
2881
 
2774
2882
  export function JSXSpreadAttribute(props: {
2775
2883
  ...JSXSpreadAttributeProps,
2776
- +parent?: ESNode,
2884
+ readonly parent?: ESNode,
2777
2885
  }): DetachedNode<JSXSpreadAttributeType> {
2778
2886
  const node = detachedProps<JSXSpreadAttributeType>(
2779
- (props.parent: $FlowFixMe),
2887
+ props.parent as $FlowFixMe,
2780
2888
  {
2781
2889
  type: 'JSXSpreadAttribute',
2782
2890
  argument: asDetachedNodeForCodeGen(props.argument),
2783
2891
  },
2784
2892
  );
2785
- setParentPointersInDirectChildren((node: $FlowFixMe));
2893
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2786
2894
  return node;
2787
2895
  }
2788
2896
 
2789
2897
  export function JSXSpreadChild(props: {
2790
2898
  ...JSXSpreadChildProps,
2791
- +parent?: ESNode,
2899
+ readonly parent?: ESNode,
2792
2900
  }): DetachedNode<JSXSpreadChildType> {
2793
- const node = detachedProps<JSXSpreadChildType>((props.parent: $FlowFixMe), {
2901
+ const node = detachedProps<JSXSpreadChildType>(props.parent as $FlowFixMe, {
2794
2902
  type: 'JSXSpreadChild',
2795
2903
  expression: asDetachedNodeForCodeGen(props.expression),
2796
2904
  });
2797
- setParentPointersInDirectChildren((node: $FlowFixMe));
2905
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2798
2906
  return node;
2799
2907
  }
2800
2908
 
2801
2909
  export function JSXText(props: {
2802
2910
  ...JSXTextProps,
2803
- +parent?: ESNode,
2911
+ readonly parent?: ESNode,
2804
2912
  }): DetachedNode<JSXTextType> {
2805
- const node = detachedProps<JSXTextType>((props.parent: $FlowFixMe), {
2913
+ const node = detachedProps<JSXTextType>(props.parent as $FlowFixMe, {
2806
2914
  type: 'JSXText',
2807
2915
  value: props.value,
2808
2916
  raw: props.raw,
2809
2917
  });
2810
- setParentPointersInDirectChildren((node: $FlowFixMe));
2918
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2811
2919
  return node;
2812
2920
  }
2813
2921
 
2814
2922
  export function KeyofTypeAnnotation(props: {
2815
2923
  ...KeyofTypeAnnotationProps,
2816
- +parent?: ESNode,
2924
+ readonly parent?: ESNode,
2817
2925
  }): DetachedNode<KeyofTypeAnnotationType> {
2818
2926
  const node = detachedProps<KeyofTypeAnnotationType>(
2819
- (props.parent: $FlowFixMe),
2927
+ props.parent as $FlowFixMe,
2820
2928
  {
2821
2929
  type: 'KeyofTypeAnnotation',
2822
2930
  argument: asDetachedNodeForCodeGen(props.argument),
2823
2931
  },
2824
2932
  );
2825
- setParentPointersInDirectChildren((node: $FlowFixMe));
2933
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2826
2934
  return node;
2827
2935
  }
2828
2936
 
2829
2937
  export function LabeledStatement(props: {
2830
2938
  ...LabeledStatementProps,
2831
- +parent?: ESNode,
2939
+ readonly parent?: ESNode,
2832
2940
  }): DetachedNode<LabeledStatementType> {
2833
- const node = detachedProps<LabeledStatementType>((props.parent: $FlowFixMe), {
2941
+ const node = detachedProps<LabeledStatementType>(props.parent as $FlowFixMe, {
2834
2942
  type: 'LabeledStatement',
2835
2943
  label: asDetachedNodeForCodeGen(props.label),
2836
2944
  body: asDetachedNodeForCodeGen(props.body),
2837
2945
  });
2838
- setParentPointersInDirectChildren((node: $FlowFixMe));
2946
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2839
2947
  return node;
2840
2948
  }
2841
2949
 
2842
2950
  export function LogicalExpression(props: {
2843
2951
  ...LogicalExpressionProps,
2844
- +parent?: ESNode,
2952
+ readonly parent?: ESNode,
2845
2953
  }): DetachedNode<LogicalExpressionType> {
2846
2954
  const node = detachedProps<LogicalExpressionType>(
2847
- (props.parent: $FlowFixMe),
2955
+ props.parent as $FlowFixMe,
2848
2956
  {
2849
2957
  type: 'LogicalExpression',
2850
2958
  left: asDetachedNodeForCodeGen(props.left),
@@ -2852,74 +2960,74 @@ export function LogicalExpression(props: {
2852
2960
  operator: props.operator,
2853
2961
  },
2854
2962
  );
2855
- setParentPointersInDirectChildren((node: $FlowFixMe));
2963
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2856
2964
  return node;
2857
2965
  }
2858
2966
 
2859
2967
  export function MatchArrayPattern(props: {
2860
2968
  ...MatchArrayPatternProps,
2861
- +parent?: ESNode,
2969
+ readonly parent?: ESNode,
2862
2970
  }): DetachedNode<MatchArrayPatternType> {
2863
2971
  const node = detachedProps<MatchArrayPatternType>(
2864
- (props.parent: $FlowFixMe),
2972
+ props.parent as $FlowFixMe,
2865
2973
  {
2866
2974
  type: 'MatchArrayPattern',
2867
2975
  elements: props.elements.map(n => asDetachedNodeForCodeGen(n)),
2868
2976
  rest: asDetachedNodeForCodeGen(props.rest),
2869
2977
  },
2870
2978
  );
2871
- setParentPointersInDirectChildren((node: $FlowFixMe));
2979
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2872
2980
  return node;
2873
2981
  }
2874
2982
 
2875
2983
  export function MatchAsPattern(props: {
2876
2984
  ...MatchAsPatternProps,
2877
- +parent?: ESNode,
2985
+ readonly parent?: ESNode,
2878
2986
  }): DetachedNode<MatchAsPatternType> {
2879
- const node = detachedProps<MatchAsPatternType>((props.parent: $FlowFixMe), {
2987
+ const node = detachedProps<MatchAsPatternType>(props.parent as $FlowFixMe, {
2880
2988
  type: 'MatchAsPattern',
2881
2989
  pattern: asDetachedNodeForCodeGen(props.pattern),
2882
2990
  target: asDetachedNodeForCodeGen(props.target),
2883
2991
  });
2884
- setParentPointersInDirectChildren((node: $FlowFixMe));
2992
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2885
2993
  return node;
2886
2994
  }
2887
2995
 
2888
2996
  export function MatchBindingPattern(props: {
2889
2997
  ...MatchBindingPatternProps,
2890
- +parent?: ESNode,
2998
+ readonly parent?: ESNode,
2891
2999
  }): DetachedNode<MatchBindingPatternType> {
2892
3000
  const node = detachedProps<MatchBindingPatternType>(
2893
- (props.parent: $FlowFixMe),
3001
+ props.parent as $FlowFixMe,
2894
3002
  {
2895
3003
  type: 'MatchBindingPattern',
2896
3004
  id: asDetachedNodeForCodeGen(props.id),
2897
3005
  kind: props.kind,
2898
3006
  },
2899
3007
  );
2900
- setParentPointersInDirectChildren((node: $FlowFixMe));
3008
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2901
3009
  return node;
2902
3010
  }
2903
3011
 
2904
3012
  export function MatchExpression(props: {
2905
3013
  ...MatchExpressionProps,
2906
- +parent?: ESNode,
3014
+ readonly parent?: ESNode,
2907
3015
  }): DetachedNode<MatchExpressionType> {
2908
- const node = detachedProps<MatchExpressionType>((props.parent: $FlowFixMe), {
3016
+ const node = detachedProps<MatchExpressionType>(props.parent as $FlowFixMe, {
2909
3017
  type: 'MatchExpression',
2910
3018
  argument: asDetachedNodeForCodeGen(props.argument),
2911
3019
  cases: props.cases.map(n => asDetachedNodeForCodeGen(n)),
2912
3020
  });
2913
- setParentPointersInDirectChildren((node: $FlowFixMe));
3021
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2914
3022
  return node;
2915
3023
  }
2916
3024
 
2917
3025
  export function MatchExpressionCase(props: {
2918
3026
  ...MatchExpressionCaseProps,
2919
- +parent?: ESNode,
3027
+ readonly parent?: ESNode,
2920
3028
  }): DetachedNode<MatchExpressionCaseType> {
2921
3029
  const node = detachedProps<MatchExpressionCaseType>(
2922
- (props.parent: $FlowFixMe),
3030
+ props.parent as $FlowFixMe,
2923
3031
  {
2924
3032
  type: 'MatchExpressionCase',
2925
3033
  pattern: asDetachedNodeForCodeGen(props.pattern),
@@ -2927,110 +3035,110 @@ export function MatchExpressionCase(props: {
2927
3035
  guard: asDetachedNodeForCodeGen(props.guard),
2928
3036
  },
2929
3037
  );
2930
- setParentPointersInDirectChildren((node: $FlowFixMe));
3038
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2931
3039
  return node;
2932
3040
  }
2933
3041
 
2934
3042
  export function MatchIdentifierPattern(props: {
2935
3043
  ...MatchIdentifierPatternProps,
2936
- +parent?: ESNode,
3044
+ readonly parent?: ESNode,
2937
3045
  }): DetachedNode<MatchIdentifierPatternType> {
2938
3046
  const node = detachedProps<MatchIdentifierPatternType>(
2939
- (props.parent: $FlowFixMe),
3047
+ props.parent as $FlowFixMe,
2940
3048
  {
2941
3049
  type: 'MatchIdentifierPattern',
2942
3050
  id: asDetachedNodeForCodeGen(props.id),
2943
3051
  },
2944
3052
  );
2945
- setParentPointersInDirectChildren((node: $FlowFixMe));
3053
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2946
3054
  return node;
2947
3055
  }
2948
3056
 
2949
3057
  export function MatchInstanceObjectPattern(props: {
2950
3058
  ...MatchInstanceObjectPatternProps,
2951
- +parent?: ESNode,
3059
+ readonly parent?: ESNode,
2952
3060
  }): DetachedNode<MatchInstanceObjectPatternType> {
2953
3061
  const node = detachedProps<MatchInstanceObjectPatternType>(
2954
- (props.parent: $FlowFixMe),
3062
+ props.parent as $FlowFixMe,
2955
3063
  {
2956
3064
  type: 'MatchInstanceObjectPattern',
2957
3065
  properties: props.properties.map(n => asDetachedNodeForCodeGen(n)),
2958
3066
  rest: asDetachedNodeForCodeGen(props.rest),
2959
3067
  },
2960
3068
  );
2961
- setParentPointersInDirectChildren((node: $FlowFixMe));
3069
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2962
3070
  return node;
2963
3071
  }
2964
3072
 
2965
3073
  export function MatchInstancePattern(props: {
2966
3074
  ...MatchInstancePatternProps,
2967
- +parent?: ESNode,
3075
+ readonly parent?: ESNode,
2968
3076
  }): DetachedNode<MatchInstancePatternType> {
2969
3077
  const node = detachedProps<MatchInstancePatternType>(
2970
- (props.parent: $FlowFixMe),
3078
+ props.parent as $FlowFixMe,
2971
3079
  {
2972
3080
  type: 'MatchInstancePattern',
2973
3081
  targetConstructor: asDetachedNodeForCodeGen(props.targetConstructor),
2974
3082
  properties: asDetachedNodeForCodeGen(props.properties),
2975
3083
  },
2976
3084
  );
2977
- setParentPointersInDirectChildren((node: $FlowFixMe));
3085
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2978
3086
  return node;
2979
3087
  }
2980
3088
 
2981
3089
  export function MatchLiteralPattern(props: {
2982
3090
  ...MatchLiteralPatternProps,
2983
- +parent?: ESNode,
3091
+ readonly parent?: ESNode,
2984
3092
  }): DetachedNode<MatchLiteralPatternType> {
2985
3093
  const node = detachedProps<MatchLiteralPatternType>(
2986
- (props.parent: $FlowFixMe),
3094
+ props.parent as $FlowFixMe,
2987
3095
  {
2988
3096
  type: 'MatchLiteralPattern',
2989
3097
  literal: asDetachedNodeForCodeGen(props.literal),
2990
3098
  },
2991
3099
  );
2992
- setParentPointersInDirectChildren((node: $FlowFixMe));
3100
+ setParentPointersInDirectChildren(node as $FlowFixMe);
2993
3101
  return node;
2994
3102
  }
2995
3103
 
2996
3104
  export function MatchMemberPattern(props: {
2997
3105
  ...MatchMemberPatternProps,
2998
- +parent?: ESNode,
3106
+ readonly parent?: ESNode,
2999
3107
  }): DetachedNode<MatchMemberPatternType> {
3000
3108
  const node = detachedProps<MatchMemberPatternType>(
3001
- (props.parent: $FlowFixMe),
3109
+ props.parent as $FlowFixMe,
3002
3110
  {
3003
3111
  type: 'MatchMemberPattern',
3004
3112
  base: asDetachedNodeForCodeGen(props.base),
3005
3113
  property: asDetachedNodeForCodeGen(props.property),
3006
3114
  },
3007
3115
  );
3008
- setParentPointersInDirectChildren((node: $FlowFixMe));
3116
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3009
3117
  return node;
3010
3118
  }
3011
3119
 
3012
3120
  export function MatchObjectPattern(props: {
3013
3121
  ...MatchObjectPatternProps,
3014
- +parent?: ESNode,
3122
+ readonly parent?: ESNode,
3015
3123
  }): DetachedNode<MatchObjectPatternType> {
3016
3124
  const node = detachedProps<MatchObjectPatternType>(
3017
- (props.parent: $FlowFixMe),
3125
+ props.parent as $FlowFixMe,
3018
3126
  {
3019
3127
  type: 'MatchObjectPattern',
3020
3128
  properties: props.properties.map(n => asDetachedNodeForCodeGen(n)),
3021
3129
  rest: asDetachedNodeForCodeGen(props.rest),
3022
3130
  },
3023
3131
  );
3024
- setParentPointersInDirectChildren((node: $FlowFixMe));
3132
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3025
3133
  return node;
3026
3134
  }
3027
3135
 
3028
3136
  export function MatchObjectPatternProperty(props: {
3029
3137
  ...MatchObjectPatternPropertyProps,
3030
- +parent?: ESNode,
3138
+ readonly parent?: ESNode,
3031
3139
  }): DetachedNode<MatchObjectPatternPropertyType> {
3032
3140
  const node = detachedProps<MatchObjectPatternPropertyType>(
3033
- (props.parent: $FlowFixMe),
3141
+ props.parent as $FlowFixMe,
3034
3142
  {
3035
3143
  type: 'MatchObjectPatternProperty',
3036
3144
  key: asDetachedNodeForCodeGen(props.key),
@@ -3038,53 +3146,53 @@ export function MatchObjectPatternProperty(props: {
3038
3146
  shorthand: props.shorthand,
3039
3147
  },
3040
3148
  );
3041
- setParentPointersInDirectChildren((node: $FlowFixMe));
3149
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3042
3150
  return node;
3043
3151
  }
3044
3152
 
3045
3153
  export function MatchOrPattern(props: {
3046
3154
  ...MatchOrPatternProps,
3047
- +parent?: ESNode,
3155
+ readonly parent?: ESNode,
3048
3156
  }): DetachedNode<MatchOrPatternType> {
3049
- const node = detachedProps<MatchOrPatternType>((props.parent: $FlowFixMe), {
3157
+ const node = detachedProps<MatchOrPatternType>(props.parent as $FlowFixMe, {
3050
3158
  type: 'MatchOrPattern',
3051
3159
  patterns: props.patterns.map(n => asDetachedNodeForCodeGen(n)),
3052
3160
  });
3053
- setParentPointersInDirectChildren((node: $FlowFixMe));
3161
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3054
3162
  return node;
3055
3163
  }
3056
3164
 
3057
3165
  export function MatchRestPattern(props: {
3058
3166
  ...MatchRestPatternProps,
3059
- +parent?: ESNode,
3167
+ readonly parent?: ESNode,
3060
3168
  }): DetachedNode<MatchRestPatternType> {
3061
- const node = detachedProps<MatchRestPatternType>((props.parent: $FlowFixMe), {
3169
+ const node = detachedProps<MatchRestPatternType>(props.parent as $FlowFixMe, {
3062
3170
  type: 'MatchRestPattern',
3063
3171
  argument: asDetachedNodeForCodeGen(props.argument),
3064
3172
  });
3065
- setParentPointersInDirectChildren((node: $FlowFixMe));
3173
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3066
3174
  return node;
3067
3175
  }
3068
3176
 
3069
3177
  export function MatchStatement(props: {
3070
3178
  ...MatchStatementProps,
3071
- +parent?: ESNode,
3179
+ readonly parent?: ESNode,
3072
3180
  }): DetachedNode<MatchStatementType> {
3073
- const node = detachedProps<MatchStatementType>((props.parent: $FlowFixMe), {
3181
+ const node = detachedProps<MatchStatementType>(props.parent as $FlowFixMe, {
3074
3182
  type: 'MatchStatement',
3075
3183
  argument: asDetachedNodeForCodeGen(props.argument),
3076
3184
  cases: props.cases.map(n => asDetachedNodeForCodeGen(n)),
3077
3185
  });
3078
- setParentPointersInDirectChildren((node: $FlowFixMe));
3186
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3079
3187
  return node;
3080
3188
  }
3081
3189
 
3082
3190
  export function MatchStatementCase(props: {
3083
3191
  ...MatchStatementCaseProps,
3084
- +parent?: ESNode,
3192
+ readonly parent?: ESNode,
3085
3193
  }): DetachedNode<MatchStatementCaseType> {
3086
3194
  const node = detachedProps<MatchStatementCaseType>(
3087
- (props.parent: $FlowFixMe),
3195
+ props.parent as $FlowFixMe,
3088
3196
  {
3089
3197
  type: 'MatchStatementCase',
3090
3198
  pattern: asDetachedNodeForCodeGen(props.pattern),
@@ -3092,54 +3200,54 @@ export function MatchStatementCase(props: {
3092
3200
  guard: asDetachedNodeForCodeGen(props.guard),
3093
3201
  },
3094
3202
  );
3095
- setParentPointersInDirectChildren((node: $FlowFixMe));
3203
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3096
3204
  return node;
3097
3205
  }
3098
3206
 
3099
3207
  export function MatchUnaryPattern(props: {
3100
3208
  ...MatchUnaryPatternProps,
3101
- +parent?: ESNode,
3209
+ readonly parent?: ESNode,
3102
3210
  }): DetachedNode<MatchUnaryPatternType> {
3103
3211
  const node = detachedProps<MatchUnaryPatternType>(
3104
- (props.parent: $FlowFixMe),
3212
+ props.parent as $FlowFixMe,
3105
3213
  {
3106
3214
  type: 'MatchUnaryPattern',
3107
3215
  argument: asDetachedNodeForCodeGen(props.argument),
3108
3216
  operator: props.operator,
3109
3217
  },
3110
3218
  );
3111
- setParentPointersInDirectChildren((node: $FlowFixMe));
3219
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3112
3220
  return node;
3113
3221
  }
3114
3222
 
3115
3223
  export function MatchWildcardPattern(
3116
3224
  props: {
3117
- +parent?: ESNode,
3225
+ readonly parent?: ESNode,
3118
3226
  } = {...null},
3119
3227
  ): DetachedNode<MatchWildcardPatternType> {
3120
- return detachedProps<MatchWildcardPatternType>((props.parent: $FlowFixMe), {
3228
+ return detachedProps<MatchWildcardPatternType>(props.parent as $FlowFixMe, {
3121
3229
  type: 'MatchWildcardPattern',
3122
3230
  });
3123
3231
  }
3124
3232
 
3125
3233
  export function MetaProperty(props: {
3126
3234
  ...MetaPropertyProps,
3127
- +parent?: ESNode,
3235
+ readonly parent?: ESNode,
3128
3236
  }): DetachedNode<MetaPropertyType> {
3129
- const node = detachedProps<MetaPropertyType>((props.parent: $FlowFixMe), {
3237
+ const node = detachedProps<MetaPropertyType>(props.parent as $FlowFixMe, {
3130
3238
  type: 'MetaProperty',
3131
3239
  meta: asDetachedNodeForCodeGen(props.meta),
3132
3240
  property: asDetachedNodeForCodeGen(props.property),
3133
3241
  });
3134
- setParentPointersInDirectChildren((node: $FlowFixMe));
3242
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3135
3243
  return node;
3136
3244
  }
3137
3245
 
3138
3246
  export function MethodDefinition(props: {
3139
3247
  ...MethodDefinitionProps,
3140
- +parent?: ESNode,
3248
+ readonly parent?: ESNode,
3141
3249
  }): DetachedNode<MethodDefinitionType> {
3142
- const node = detachedProps<MethodDefinitionType>((props.parent: $FlowFixMe), {
3250
+ const node = detachedProps<MethodDefinitionType>(props.parent as $FlowFixMe, {
3143
3251
  type: 'MethodDefinition',
3144
3252
  key: asDetachedNodeForCodeGen(props.key),
3145
3253
  value: asDetachedNodeForCodeGen(props.value),
@@ -3148,66 +3256,66 @@ export function MethodDefinition(props: {
3148
3256
  static: props.static,
3149
3257
  decorators: props.decorators.map(n => asDetachedNodeForCodeGen(n)),
3150
3258
  });
3151
- setParentPointersInDirectChildren((node: $FlowFixMe));
3259
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3152
3260
  return node;
3153
3261
  }
3154
3262
 
3155
3263
  export function MixedTypeAnnotation(
3156
3264
  props: {
3157
- +parent?: ESNode,
3265
+ readonly parent?: ESNode,
3158
3266
  } = {...null},
3159
3267
  ): DetachedNode<MixedTypeAnnotationType> {
3160
- return detachedProps<MixedTypeAnnotationType>((props.parent: $FlowFixMe), {
3268
+ return detachedProps<MixedTypeAnnotationType>(props.parent as $FlowFixMe, {
3161
3269
  type: 'MixedTypeAnnotation',
3162
3270
  });
3163
3271
  }
3164
3272
 
3165
3273
  export function NeverTypeAnnotation(
3166
3274
  props: {
3167
- +parent?: ESNode,
3275
+ readonly parent?: ESNode,
3168
3276
  } = {...null},
3169
3277
  ): DetachedNode<NeverTypeAnnotationType> {
3170
- return detachedProps<NeverTypeAnnotationType>((props.parent: $FlowFixMe), {
3278
+ return detachedProps<NeverTypeAnnotationType>(props.parent as $FlowFixMe, {
3171
3279
  type: 'NeverTypeAnnotation',
3172
3280
  });
3173
3281
  }
3174
3282
 
3175
3283
  export function NewExpression(props: {
3176
3284
  ...NewExpressionProps,
3177
- +parent?: ESNode,
3285
+ readonly parent?: ESNode,
3178
3286
  }): DetachedNode<NewExpressionType> {
3179
- const node = detachedProps<NewExpressionType>((props.parent: $FlowFixMe), {
3287
+ const node = detachedProps<NewExpressionType>(props.parent as $FlowFixMe, {
3180
3288
  type: 'NewExpression',
3181
3289
  callee: asDetachedNodeForCodeGen(props.callee),
3182
3290
  typeArguments: asDetachedNodeForCodeGen(props.typeArguments),
3183
3291
  arguments: props.arguments.map(n => asDetachedNodeForCodeGen(n)),
3184
3292
  });
3185
- setParentPointersInDirectChildren((node: $FlowFixMe));
3293
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3186
3294
  return node;
3187
3295
  }
3188
3296
 
3189
3297
  export function NullableTypeAnnotation(props: {
3190
3298
  ...NullableTypeAnnotationProps,
3191
- +parent?: ESNode,
3299
+ readonly parent?: ESNode,
3192
3300
  }): DetachedNode<NullableTypeAnnotationType> {
3193
3301
  const node = detachedProps<NullableTypeAnnotationType>(
3194
- (props.parent: $FlowFixMe),
3302
+ props.parent as $FlowFixMe,
3195
3303
  {
3196
3304
  type: 'NullableTypeAnnotation',
3197
3305
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
3198
3306
  },
3199
3307
  );
3200
- setParentPointersInDirectChildren((node: $FlowFixMe));
3308
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3201
3309
  return node;
3202
3310
  }
3203
3311
 
3204
3312
  export function NullLiteralTypeAnnotation(
3205
3313
  props: {
3206
- +parent?: ESNode,
3314
+ readonly parent?: ESNode,
3207
3315
  } = {...null},
3208
3316
  ): DetachedNode<NullLiteralTypeAnnotationType> {
3209
3317
  return detachedProps<NullLiteralTypeAnnotationType>(
3210
- (props.parent: $FlowFixMe),
3318
+ props.parent as $FlowFixMe,
3211
3319
  {
3212
3320
  type: 'NullLiteralTypeAnnotation',
3213
3321
  },
@@ -3216,61 +3324,61 @@ export function NullLiteralTypeAnnotation(
3216
3324
 
3217
3325
  export function NumberLiteralTypeAnnotation(props: {
3218
3326
  ...NumberLiteralTypeAnnotationProps,
3219
- +parent?: ESNode,
3327
+ readonly parent?: ESNode,
3220
3328
  }): DetachedNode<NumberLiteralTypeAnnotationType> {
3221
3329
  const node = detachedProps<NumberLiteralTypeAnnotationType>(
3222
- (props.parent: $FlowFixMe),
3330
+ props.parent as $FlowFixMe,
3223
3331
  {
3224
3332
  type: 'NumberLiteralTypeAnnotation',
3225
3333
  value: props.value,
3226
3334
  raw: props.raw,
3227
3335
  },
3228
3336
  );
3229
- setParentPointersInDirectChildren((node: $FlowFixMe));
3337
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3230
3338
  return node;
3231
3339
  }
3232
3340
 
3233
3341
  export function NumberTypeAnnotation(
3234
3342
  props: {
3235
- +parent?: ESNode,
3343
+ readonly parent?: ESNode,
3236
3344
  } = {...null},
3237
3345
  ): DetachedNode<NumberTypeAnnotationType> {
3238
- return detachedProps<NumberTypeAnnotationType>((props.parent: $FlowFixMe), {
3346
+ return detachedProps<NumberTypeAnnotationType>(props.parent as $FlowFixMe, {
3239
3347
  type: 'NumberTypeAnnotation',
3240
3348
  });
3241
3349
  }
3242
3350
 
3243
3351
  export function ObjectExpression(props: {
3244
3352
  ...ObjectExpressionProps,
3245
- +parent?: ESNode,
3353
+ readonly parent?: ESNode,
3246
3354
  }): DetachedNode<ObjectExpressionType> {
3247
- const node = detachedProps<ObjectExpressionType>((props.parent: $FlowFixMe), {
3355
+ const node = detachedProps<ObjectExpressionType>(props.parent as $FlowFixMe, {
3248
3356
  type: 'ObjectExpression',
3249
3357
  properties: props.properties.map(n => asDetachedNodeForCodeGen(n)),
3250
3358
  });
3251
- setParentPointersInDirectChildren((node: $FlowFixMe));
3359
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3252
3360
  return node;
3253
3361
  }
3254
3362
 
3255
3363
  export function ObjectPattern(props: {
3256
3364
  ...ObjectPatternProps,
3257
- +parent?: ESNode,
3365
+ readonly parent?: ESNode,
3258
3366
  }): DetachedNode<ObjectPatternType> {
3259
- const node = detachedProps<ObjectPatternType>((props.parent: $FlowFixMe), {
3367
+ const node = detachedProps<ObjectPatternType>(props.parent as $FlowFixMe, {
3260
3368
  type: 'ObjectPattern',
3261
3369
  properties: props.properties.map(n => asDetachedNodeForCodeGen(n)),
3262
3370
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
3263
3371
  });
3264
- setParentPointersInDirectChildren((node: $FlowFixMe));
3372
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3265
3373
  return node;
3266
3374
  }
3267
3375
 
3268
3376
  export function ObjectTypeAnnotation(props: {
3269
3377
  ...ObjectTypeAnnotationProps,
3270
- +parent?: ESNode,
3378
+ readonly parent?: ESNode,
3271
3379
  }): DetachedNode<ObjectTypeAnnotationType> {
3272
3380
  const node = detachedProps<ObjectTypeAnnotationType>(
3273
- (props.parent: $FlowFixMe),
3381
+ props.parent as $FlowFixMe,
3274
3382
  {
3275
3383
  type: 'ObjectTypeAnnotation',
3276
3384
  properties: props.properties.map(n => asDetachedNodeForCodeGen(n)),
@@ -3283,32 +3391,32 @@ export function ObjectTypeAnnotation(props: {
3283
3391
  exact: props.exact,
3284
3392
  },
3285
3393
  );
3286
- setParentPointersInDirectChildren((node: $FlowFixMe));
3394
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3287
3395
  return node;
3288
3396
  }
3289
3397
 
3290
3398
  export function ObjectTypeCallProperty(props: {
3291
3399
  ...ObjectTypeCallPropertyProps,
3292
- +parent?: ESNode,
3400
+ readonly parent?: ESNode,
3293
3401
  }): DetachedNode<ObjectTypeCallPropertyType> {
3294
3402
  const node = detachedProps<ObjectTypeCallPropertyType>(
3295
- (props.parent: $FlowFixMe),
3403
+ props.parent as $FlowFixMe,
3296
3404
  {
3297
3405
  type: 'ObjectTypeCallProperty',
3298
3406
  value: asDetachedNodeForCodeGen(props.value),
3299
3407
  static: props.static,
3300
3408
  },
3301
3409
  );
3302
- setParentPointersInDirectChildren((node: $FlowFixMe));
3410
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3303
3411
  return node;
3304
3412
  }
3305
3413
 
3306
3414
  export function ObjectTypeIndexer(props: {
3307
3415
  ...ObjectTypeIndexerProps,
3308
- +parent?: ESNode,
3416
+ readonly parent?: ESNode,
3309
3417
  }): DetachedNode<ObjectTypeIndexerType> {
3310
3418
  const node = detachedProps<ObjectTypeIndexerType>(
3311
- (props.parent: $FlowFixMe),
3419
+ props.parent as $FlowFixMe,
3312
3420
  {
3313
3421
  type: 'ObjectTypeIndexer',
3314
3422
  id: asDetachedNodeForCodeGen(props.id),
@@ -3318,16 +3426,16 @@ export function ObjectTypeIndexer(props: {
3318
3426
  variance: asDetachedNodeForCodeGen(props.variance),
3319
3427
  },
3320
3428
  );
3321
- setParentPointersInDirectChildren((node: $FlowFixMe));
3429
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3322
3430
  return node;
3323
3431
  }
3324
3432
 
3325
3433
  export function ObjectTypeInternalSlot(props: {
3326
3434
  ...ObjectTypeInternalSlotProps,
3327
- +parent?: ESNode,
3435
+ readonly parent?: ESNode,
3328
3436
  }): DetachedNode<ObjectTypeInternalSlotType> {
3329
3437
  const node = detachedProps<ObjectTypeInternalSlotType>(
3330
- (props.parent: $FlowFixMe),
3438
+ props.parent as $FlowFixMe,
3331
3439
  {
3332
3440
  type: 'ObjectTypeInternalSlot',
3333
3441
  id: asDetachedNodeForCodeGen(props.id),
@@ -3337,16 +3445,16 @@ export function ObjectTypeInternalSlot(props: {
3337
3445
  method: props.method,
3338
3446
  },
3339
3447
  );
3340
- setParentPointersInDirectChildren((node: $FlowFixMe));
3448
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3341
3449
  return node;
3342
3450
  }
3343
3451
 
3344
3452
  export function ObjectTypeMappedTypeProperty(props: {
3345
3453
  ...ObjectTypeMappedTypePropertyProps,
3346
- +parent?: ESNode,
3454
+ readonly parent?: ESNode,
3347
3455
  }): DetachedNode<ObjectTypeMappedTypePropertyType> {
3348
3456
  const node = detachedProps<ObjectTypeMappedTypePropertyType>(
3349
- (props.parent: $FlowFixMe),
3457
+ props.parent as $FlowFixMe,
3350
3458
  {
3351
3459
  type: 'ObjectTypeMappedTypeProperty',
3352
3460
  keyTparam: asDetachedNodeForCodeGen(props.keyTparam),
@@ -3356,30 +3464,30 @@ export function ObjectTypeMappedTypeProperty(props: {
3356
3464
  optional: props.optional,
3357
3465
  },
3358
3466
  );
3359
- setParentPointersInDirectChildren((node: $FlowFixMe));
3467
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3360
3468
  return node;
3361
3469
  }
3362
3470
 
3363
3471
  export function ObjectTypeSpreadProperty(props: {
3364
3472
  ...ObjectTypeSpreadPropertyProps,
3365
- +parent?: ESNode,
3473
+ readonly parent?: ESNode,
3366
3474
  }): DetachedNode<ObjectTypeSpreadPropertyType> {
3367
3475
  const node = detachedProps<ObjectTypeSpreadPropertyType>(
3368
- (props.parent: $FlowFixMe),
3476
+ props.parent as $FlowFixMe,
3369
3477
  {
3370
3478
  type: 'ObjectTypeSpreadProperty',
3371
3479
  argument: asDetachedNodeForCodeGen(props.argument),
3372
3480
  },
3373
3481
  );
3374
- setParentPointersInDirectChildren((node: $FlowFixMe));
3482
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3375
3483
  return node;
3376
3484
  }
3377
3485
 
3378
3486
  export function OpaqueType(props: {
3379
3487
  ...OpaqueTypeProps,
3380
- +parent?: ESNode,
3488
+ readonly parent?: ESNode,
3381
3489
  }): DetachedNode<OpaqueTypeType> {
3382
- const node = detachedProps<OpaqueTypeType>((props.parent: $FlowFixMe), {
3490
+ const node = detachedProps<OpaqueTypeType>(props.parent as $FlowFixMe, {
3383
3491
  type: 'OpaqueType',
3384
3492
  id: asDetachedNodeForCodeGen(props.id),
3385
3493
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
@@ -3388,16 +3496,16 @@ export function OpaqueType(props: {
3388
3496
  upperBound: asDetachedNodeForCodeGen(props.upperBound),
3389
3497
  supertype: asDetachedNodeForCodeGen(props.supertype),
3390
3498
  });
3391
- setParentPointersInDirectChildren((node: $FlowFixMe));
3499
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3392
3500
  return node;
3393
3501
  }
3394
3502
 
3395
3503
  export function OptionalIndexedAccessType(props: {
3396
3504
  ...OptionalIndexedAccessTypeProps,
3397
- +parent?: ESNode,
3505
+ readonly parent?: ESNode,
3398
3506
  }): DetachedNode<OptionalIndexedAccessTypeType> {
3399
3507
  const node = detachedProps<OptionalIndexedAccessTypeType>(
3400
- (props.parent: $FlowFixMe),
3508
+ props.parent as $FlowFixMe,
3401
3509
  {
3402
3510
  type: 'OptionalIndexedAccessType',
3403
3511
  objectType: asDetachedNodeForCodeGen(props.objectType),
@@ -3405,30 +3513,30 @@ export function OptionalIndexedAccessType(props: {
3405
3513
  optional: props.optional,
3406
3514
  },
3407
3515
  );
3408
- setParentPointersInDirectChildren((node: $FlowFixMe));
3516
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3409
3517
  return node;
3410
3518
  }
3411
3519
 
3412
3520
  export function PrivateIdentifier(props: {
3413
3521
  ...PrivateIdentifierProps,
3414
- +parent?: ESNode,
3522
+ readonly parent?: ESNode,
3415
3523
  }): DetachedNode<PrivateIdentifierType> {
3416
3524
  const node = detachedProps<PrivateIdentifierType>(
3417
- (props.parent: $FlowFixMe),
3525
+ props.parent as $FlowFixMe,
3418
3526
  {
3419
3527
  type: 'PrivateIdentifier',
3420
3528
  name: props.name,
3421
3529
  },
3422
3530
  );
3423
- setParentPointersInDirectChildren((node: $FlowFixMe));
3531
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3424
3532
  return node;
3425
3533
  }
3426
3534
 
3427
3535
  export function Property(props: {
3428
3536
  ...PropertyProps,
3429
- +parent?: ESNode,
3537
+ readonly parent?: ESNode,
3430
3538
  }): DetachedNode<PropertyType> {
3431
- const node = detachedProps<PropertyType>((props.parent: $FlowFixMe), {
3539
+ const node = detachedProps<PropertyType>(props.parent as $FlowFixMe, {
3432
3540
  type: 'Property',
3433
3541
  key: asDetachedNodeForCodeGen(props.key),
3434
3542
  value: asDetachedNodeForCodeGen(props.value),
@@ -3437,16 +3545,16 @@ export function Property(props: {
3437
3545
  method: props.method,
3438
3546
  shorthand: props.shorthand,
3439
3547
  });
3440
- setParentPointersInDirectChildren((node: $FlowFixMe));
3548
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3441
3549
  return node;
3442
3550
  }
3443
3551
 
3444
3552
  export function PropertyDefinition(props: {
3445
3553
  ...PropertyDefinitionProps,
3446
- +parent?: ESNode,
3554
+ readonly parent?: ESNode,
3447
3555
  }): DetachedNode<PropertyDefinitionType> {
3448
3556
  const node = detachedProps<PropertyDefinitionType>(
3449
- (props.parent: $FlowFixMe),
3557
+ props.parent as $FlowFixMe,
3450
3558
  {
3451
3559
  type: 'PropertyDefinition',
3452
3560
  key: asDetachedNodeForCodeGen(props.key),
@@ -3460,48 +3568,48 @@ export function PropertyDefinition(props: {
3460
3568
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
3461
3569
  },
3462
3570
  );
3463
- setParentPointersInDirectChildren((node: $FlowFixMe));
3571
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3464
3572
  return node;
3465
3573
  }
3466
3574
 
3467
3575
  export function QualifiedTypeIdentifier(props: {
3468
3576
  ...QualifiedTypeIdentifierProps,
3469
- +parent?: ESNode,
3577
+ readonly parent?: ESNode,
3470
3578
  }): DetachedNode<QualifiedTypeIdentifierType> {
3471
3579
  const node = detachedProps<QualifiedTypeIdentifierType>(
3472
- (props.parent: $FlowFixMe),
3580
+ props.parent as $FlowFixMe,
3473
3581
  {
3474
3582
  type: 'QualifiedTypeIdentifier',
3475
3583
  qualification: asDetachedNodeForCodeGen(props.qualification),
3476
3584
  id: asDetachedNodeForCodeGen(props.id),
3477
3585
  },
3478
3586
  );
3479
- setParentPointersInDirectChildren((node: $FlowFixMe));
3587
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3480
3588
  return node;
3481
3589
  }
3482
3590
 
3483
3591
  export function QualifiedTypeofIdentifier(props: {
3484
3592
  ...QualifiedTypeofIdentifierProps,
3485
- +parent?: ESNode,
3593
+ readonly parent?: ESNode,
3486
3594
  }): DetachedNode<QualifiedTypeofIdentifierType> {
3487
3595
  const node = detachedProps<QualifiedTypeofIdentifierType>(
3488
- (props.parent: $FlowFixMe),
3596
+ props.parent as $FlowFixMe,
3489
3597
  {
3490
3598
  type: 'QualifiedTypeofIdentifier',
3491
3599
  qualification: asDetachedNodeForCodeGen(props.qualification),
3492
3600
  id: asDetachedNodeForCodeGen(props.id),
3493
3601
  },
3494
3602
  );
3495
- setParentPointersInDirectChildren((node: $FlowFixMe));
3603
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3496
3604
  return node;
3497
3605
  }
3498
3606
 
3499
3607
  export function RecordDeclaration(props: {
3500
3608
  ...RecordDeclarationProps,
3501
- +parent?: ESNode,
3609
+ readonly parent?: ESNode,
3502
3610
  }): DetachedNode<RecordDeclarationType> {
3503
3611
  const node = detachedProps<RecordDeclarationType>(
3504
- (props.parent: $FlowFixMe),
3612
+ props.parent as $FlowFixMe,
3505
3613
  {
3506
3614
  type: 'RecordDeclaration',
3507
3615
  id: asDetachedNodeForCodeGen(props.id),
@@ -3510,47 +3618,47 @@ export function RecordDeclaration(props: {
3510
3618
  body: asDetachedNodeForCodeGen(props.body),
3511
3619
  },
3512
3620
  );
3513
- setParentPointersInDirectChildren((node: $FlowFixMe));
3621
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3514
3622
  return node;
3515
3623
  }
3516
3624
 
3517
3625
  export function RecordDeclarationBody(props: {
3518
3626
  ...RecordDeclarationBodyProps,
3519
- +parent?: ESNode,
3627
+ readonly parent?: ESNode,
3520
3628
  }): DetachedNode<RecordDeclarationBodyType> {
3521
3629
  const node = detachedProps<RecordDeclarationBodyType>(
3522
- (props.parent: $FlowFixMe),
3630
+ props.parent as $FlowFixMe,
3523
3631
  {
3524
3632
  type: 'RecordDeclarationBody',
3525
3633
  elements: props.elements.map(n => asDetachedNodeForCodeGen(n)),
3526
3634
  },
3527
3635
  );
3528
- setParentPointersInDirectChildren((node: $FlowFixMe));
3636
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3529
3637
  return node;
3530
3638
  }
3531
3639
 
3532
3640
  export function RecordDeclarationImplements(props: {
3533
3641
  ...RecordDeclarationImplementsProps,
3534
- +parent?: ESNode,
3642
+ readonly parent?: ESNode,
3535
3643
  }): DetachedNode<RecordDeclarationImplementsType> {
3536
3644
  const node = detachedProps<RecordDeclarationImplementsType>(
3537
- (props.parent: $FlowFixMe),
3645
+ props.parent as $FlowFixMe,
3538
3646
  {
3539
3647
  type: 'RecordDeclarationImplements',
3540
3648
  id: asDetachedNodeForCodeGen(props.id),
3541
3649
  typeArguments: asDetachedNodeForCodeGen(props.typeArguments),
3542
3650
  },
3543
3651
  );
3544
- setParentPointersInDirectChildren((node: $FlowFixMe));
3652
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3545
3653
  return node;
3546
3654
  }
3547
3655
 
3548
3656
  export function RecordDeclarationProperty(props: {
3549
3657
  ...RecordDeclarationPropertyProps,
3550
- +parent?: ESNode,
3658
+ readonly parent?: ESNode,
3551
3659
  }): DetachedNode<RecordDeclarationPropertyType> {
3552
3660
  const node = detachedProps<RecordDeclarationPropertyType>(
3553
- (props.parent: $FlowFixMe),
3661
+ props.parent as $FlowFixMe,
3554
3662
  {
3555
3663
  type: 'RecordDeclarationProperty',
3556
3664
  key: asDetachedNodeForCodeGen(props.key),
@@ -3558,16 +3666,16 @@ export function RecordDeclarationProperty(props: {
3558
3666
  defaultValue: asDetachedNodeForCodeGen(props.defaultValue),
3559
3667
  },
3560
3668
  );
3561
- setParentPointersInDirectChildren((node: $FlowFixMe));
3669
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3562
3670
  return node;
3563
3671
  }
3564
3672
 
3565
3673
  export function RecordDeclarationStaticProperty(props: {
3566
3674
  ...RecordDeclarationStaticPropertyProps,
3567
- +parent?: ESNode,
3675
+ readonly parent?: ESNode,
3568
3676
  }): DetachedNode<RecordDeclarationStaticPropertyType> {
3569
3677
  const node = detachedProps<RecordDeclarationStaticPropertyType>(
3570
- (props.parent: $FlowFixMe),
3678
+ props.parent as $FlowFixMe,
3571
3679
  {
3572
3680
  type: 'RecordDeclarationStaticProperty',
3573
3681
  key: asDetachedNodeForCodeGen(props.key),
@@ -3575,271 +3683,271 @@ export function RecordDeclarationStaticProperty(props: {
3575
3683
  value: asDetachedNodeForCodeGen(props.value),
3576
3684
  },
3577
3685
  );
3578
- setParentPointersInDirectChildren((node: $FlowFixMe));
3686
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3579
3687
  return node;
3580
3688
  }
3581
3689
 
3582
3690
  export function RecordExpression(props: {
3583
3691
  ...RecordExpressionProps,
3584
- +parent?: ESNode,
3692
+ readonly parent?: ESNode,
3585
3693
  }): DetachedNode<RecordExpressionType> {
3586
- const node = detachedProps<RecordExpressionType>((props.parent: $FlowFixMe), {
3694
+ const node = detachedProps<RecordExpressionType>(props.parent as $FlowFixMe, {
3587
3695
  type: 'RecordExpression',
3588
3696
  recordConstructor: asDetachedNodeForCodeGen(props.recordConstructor),
3589
3697
  typeArguments: asDetachedNodeForCodeGen(props.typeArguments),
3590
3698
  properties: asDetachedNodeForCodeGen(props.properties),
3591
3699
  });
3592
- setParentPointersInDirectChildren((node: $FlowFixMe));
3700
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3593
3701
  return node;
3594
3702
  }
3595
3703
 
3596
3704
  export function RecordExpressionProperties(props: {
3597
3705
  ...RecordExpressionPropertiesProps,
3598
- +parent?: ESNode,
3706
+ readonly parent?: ESNode,
3599
3707
  }): DetachedNode<RecordExpressionPropertiesType> {
3600
3708
  const node = detachedProps<RecordExpressionPropertiesType>(
3601
- (props.parent: $FlowFixMe),
3709
+ props.parent as $FlowFixMe,
3602
3710
  {
3603
3711
  type: 'RecordExpressionProperties',
3604
3712
  properties: props.properties.map(n => asDetachedNodeForCodeGen(n)),
3605
3713
  },
3606
3714
  );
3607
- setParentPointersInDirectChildren((node: $FlowFixMe));
3715
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3608
3716
  return node;
3609
3717
  }
3610
3718
 
3611
3719
  export function RestElement(props: {
3612
3720
  ...RestElementProps,
3613
- +parent?: ESNode,
3721
+ readonly parent?: ESNode,
3614
3722
  }): DetachedNode<RestElementType> {
3615
- const node = detachedProps<RestElementType>((props.parent: $FlowFixMe), {
3723
+ const node = detachedProps<RestElementType>(props.parent as $FlowFixMe, {
3616
3724
  type: 'RestElement',
3617
3725
  argument: asDetachedNodeForCodeGen(props.argument),
3618
3726
  });
3619
- setParentPointersInDirectChildren((node: $FlowFixMe));
3727
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3620
3728
  return node;
3621
3729
  }
3622
3730
 
3623
3731
  export function ReturnStatement(props: {
3624
3732
  ...ReturnStatementProps,
3625
- +parent?: ESNode,
3733
+ readonly parent?: ESNode,
3626
3734
  }): DetachedNode<ReturnStatementType> {
3627
- const node = detachedProps<ReturnStatementType>((props.parent: $FlowFixMe), {
3735
+ const node = detachedProps<ReturnStatementType>(props.parent as $FlowFixMe, {
3628
3736
  type: 'ReturnStatement',
3629
3737
  argument: asDetachedNodeForCodeGen(props.argument),
3630
3738
  });
3631
- setParentPointersInDirectChildren((node: $FlowFixMe));
3739
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3632
3740
  return node;
3633
3741
  }
3634
3742
 
3635
3743
  export function SequenceExpression(props: {
3636
3744
  ...SequenceExpressionProps,
3637
- +parent?: ESNode,
3745
+ readonly parent?: ESNode,
3638
3746
  }): DetachedNode<SequenceExpressionType> {
3639
3747
  const node = detachedProps<SequenceExpressionType>(
3640
- (props.parent: $FlowFixMe),
3748
+ props.parent as $FlowFixMe,
3641
3749
  {
3642
3750
  type: 'SequenceExpression',
3643
3751
  expressions: props.expressions.map(n => asDetachedNodeForCodeGen(n)),
3644
3752
  },
3645
3753
  );
3646
- setParentPointersInDirectChildren((node: $FlowFixMe));
3754
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3647
3755
  return node;
3648
3756
  }
3649
3757
 
3650
3758
  export function SpreadElement(props: {
3651
3759
  ...SpreadElementProps,
3652
- +parent?: ESNode,
3760
+ readonly parent?: ESNode,
3653
3761
  }): DetachedNode<SpreadElementType> {
3654
- const node = detachedProps<SpreadElementType>((props.parent: $FlowFixMe), {
3762
+ const node = detachedProps<SpreadElementType>(props.parent as $FlowFixMe, {
3655
3763
  type: 'SpreadElement',
3656
3764
  argument: asDetachedNodeForCodeGen(props.argument),
3657
3765
  });
3658
- setParentPointersInDirectChildren((node: $FlowFixMe));
3766
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3659
3767
  return node;
3660
3768
  }
3661
3769
 
3662
3770
  export function StaticBlock(props: {
3663
3771
  ...StaticBlockProps,
3664
- +parent?: ESNode,
3772
+ readonly parent?: ESNode,
3665
3773
  }): DetachedNode<StaticBlockType> {
3666
- const node = detachedProps<StaticBlockType>((props.parent: $FlowFixMe), {
3774
+ const node = detachedProps<StaticBlockType>(props.parent as $FlowFixMe, {
3667
3775
  type: 'StaticBlock',
3668
3776
  body: props.body.map(n => asDetachedNodeForCodeGen(n)),
3669
3777
  });
3670
- setParentPointersInDirectChildren((node: $FlowFixMe));
3778
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3671
3779
  return node;
3672
3780
  }
3673
3781
 
3674
3782
  export function StringLiteralTypeAnnotation(props: {
3675
3783
  ...StringLiteralTypeAnnotationProps,
3676
- +parent?: ESNode,
3784
+ readonly parent?: ESNode,
3677
3785
  }): DetachedNode<StringLiteralTypeAnnotationType> {
3678
3786
  const node = detachedProps<StringLiteralTypeAnnotationType>(
3679
- (props.parent: $FlowFixMe),
3787
+ props.parent as $FlowFixMe,
3680
3788
  {
3681
3789
  type: 'StringLiteralTypeAnnotation',
3682
3790
  value: props.value,
3683
3791
  raw: props.raw,
3684
3792
  },
3685
3793
  );
3686
- setParentPointersInDirectChildren((node: $FlowFixMe));
3794
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3687
3795
  return node;
3688
3796
  }
3689
3797
 
3690
3798
  export function StringTypeAnnotation(
3691
3799
  props: {
3692
- +parent?: ESNode,
3800
+ readonly parent?: ESNode,
3693
3801
  } = {...null},
3694
3802
  ): DetachedNode<StringTypeAnnotationType> {
3695
- return detachedProps<StringTypeAnnotationType>((props.parent: $FlowFixMe), {
3803
+ return detachedProps<StringTypeAnnotationType>(props.parent as $FlowFixMe, {
3696
3804
  type: 'StringTypeAnnotation',
3697
3805
  });
3698
3806
  }
3699
3807
 
3700
3808
  export function Super(
3701
3809
  props: {
3702
- +parent?: ESNode,
3810
+ readonly parent?: ESNode,
3703
3811
  } = {...null},
3704
3812
  ): DetachedNode<SuperType> {
3705
- return detachedProps<SuperType>((props.parent: $FlowFixMe), {
3813
+ return detachedProps<SuperType>(props.parent as $FlowFixMe, {
3706
3814
  type: 'Super',
3707
3815
  });
3708
3816
  }
3709
3817
 
3710
3818
  export function SwitchCase(props: {
3711
3819
  ...SwitchCaseProps,
3712
- +parent?: ESNode,
3820
+ readonly parent?: ESNode,
3713
3821
  }): DetachedNode<SwitchCaseType> {
3714
- const node = detachedProps<SwitchCaseType>((props.parent: $FlowFixMe), {
3822
+ const node = detachedProps<SwitchCaseType>(props.parent as $FlowFixMe, {
3715
3823
  type: 'SwitchCase',
3716
3824
  test: asDetachedNodeForCodeGen(props.test),
3717
3825
  consequent: props.consequent.map(n => asDetachedNodeForCodeGen(n)),
3718
3826
  });
3719
- setParentPointersInDirectChildren((node: $FlowFixMe));
3827
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3720
3828
  return node;
3721
3829
  }
3722
3830
 
3723
3831
  export function SwitchStatement(props: {
3724
3832
  ...SwitchStatementProps,
3725
- +parent?: ESNode,
3833
+ readonly parent?: ESNode,
3726
3834
  }): DetachedNode<SwitchStatementType> {
3727
- const node = detachedProps<SwitchStatementType>((props.parent: $FlowFixMe), {
3835
+ const node = detachedProps<SwitchStatementType>(props.parent as $FlowFixMe, {
3728
3836
  type: 'SwitchStatement',
3729
3837
  discriminant: asDetachedNodeForCodeGen(props.discriminant),
3730
3838
  cases: props.cases.map(n => asDetachedNodeForCodeGen(n)),
3731
3839
  });
3732
- setParentPointersInDirectChildren((node: $FlowFixMe));
3840
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3733
3841
  return node;
3734
3842
  }
3735
3843
 
3736
3844
  export function SymbolTypeAnnotation(
3737
3845
  props: {
3738
- +parent?: ESNode,
3846
+ readonly parent?: ESNode,
3739
3847
  } = {...null},
3740
3848
  ): DetachedNode<SymbolTypeAnnotationType> {
3741
- return detachedProps<SymbolTypeAnnotationType>((props.parent: $FlowFixMe), {
3849
+ return detachedProps<SymbolTypeAnnotationType>(props.parent as $FlowFixMe, {
3742
3850
  type: 'SymbolTypeAnnotation',
3743
3851
  });
3744
3852
  }
3745
3853
 
3746
3854
  export function TaggedTemplateExpression(props: {
3747
3855
  ...TaggedTemplateExpressionProps,
3748
- +parent?: ESNode,
3856
+ readonly parent?: ESNode,
3749
3857
  }): DetachedNode<TaggedTemplateExpressionType> {
3750
3858
  const node = detachedProps<TaggedTemplateExpressionType>(
3751
- (props.parent: $FlowFixMe),
3859
+ props.parent as $FlowFixMe,
3752
3860
  {
3753
3861
  type: 'TaggedTemplateExpression',
3754
3862
  tag: asDetachedNodeForCodeGen(props.tag),
3755
3863
  quasi: asDetachedNodeForCodeGen(props.quasi),
3756
3864
  },
3757
3865
  );
3758
- setParentPointersInDirectChildren((node: $FlowFixMe));
3866
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3759
3867
  return node;
3760
3868
  }
3761
3869
 
3762
3870
  export function TemplateLiteral(props: {
3763
3871
  ...TemplateLiteralProps,
3764
- +parent?: ESNode,
3872
+ readonly parent?: ESNode,
3765
3873
  }): DetachedNode<TemplateLiteralType> {
3766
- const node = detachedProps<TemplateLiteralType>((props.parent: $FlowFixMe), {
3874
+ const node = detachedProps<TemplateLiteralType>(props.parent as $FlowFixMe, {
3767
3875
  type: 'TemplateLiteral',
3768
3876
  quasis: props.quasis.map(n => asDetachedNodeForCodeGen(n)),
3769
3877
  expressions: props.expressions.map(n => asDetachedNodeForCodeGen(n)),
3770
3878
  });
3771
- setParentPointersInDirectChildren((node: $FlowFixMe));
3879
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3772
3880
  return node;
3773
3881
  }
3774
3882
 
3775
3883
  export function ThisExpression(
3776
3884
  props: {
3777
- +parent?: ESNode,
3885
+ readonly parent?: ESNode,
3778
3886
  } = {...null},
3779
3887
  ): DetachedNode<ThisExpressionType> {
3780
- return detachedProps<ThisExpressionType>((props.parent: $FlowFixMe), {
3888
+ return detachedProps<ThisExpressionType>(props.parent as $FlowFixMe, {
3781
3889
  type: 'ThisExpression',
3782
3890
  });
3783
3891
  }
3784
3892
 
3785
3893
  export function ThisTypeAnnotation(
3786
3894
  props: {
3787
- +parent?: ESNode,
3895
+ readonly parent?: ESNode,
3788
3896
  } = {...null},
3789
3897
  ): DetachedNode<ThisTypeAnnotationType> {
3790
- return detachedProps<ThisTypeAnnotationType>((props.parent: $FlowFixMe), {
3898
+ return detachedProps<ThisTypeAnnotationType>(props.parent as $FlowFixMe, {
3791
3899
  type: 'ThisTypeAnnotation',
3792
3900
  });
3793
3901
  }
3794
3902
 
3795
3903
  export function ThrowStatement(props: {
3796
3904
  ...ThrowStatementProps,
3797
- +parent?: ESNode,
3905
+ readonly parent?: ESNode,
3798
3906
  }): DetachedNode<ThrowStatementType> {
3799
- const node = detachedProps<ThrowStatementType>((props.parent: $FlowFixMe), {
3907
+ const node = detachedProps<ThrowStatementType>(props.parent as $FlowFixMe, {
3800
3908
  type: 'ThrowStatement',
3801
3909
  argument: asDetachedNodeForCodeGen(props.argument),
3802
3910
  });
3803
- setParentPointersInDirectChildren((node: $FlowFixMe));
3911
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3804
3912
  return node;
3805
3913
  }
3806
3914
 
3807
3915
  export function TryStatement(props: {
3808
3916
  ...TryStatementProps,
3809
- +parent?: ESNode,
3917
+ readonly parent?: ESNode,
3810
3918
  }): DetachedNode<TryStatementType> {
3811
- const node = detachedProps<TryStatementType>((props.parent: $FlowFixMe), {
3919
+ const node = detachedProps<TryStatementType>(props.parent as $FlowFixMe, {
3812
3920
  type: 'TryStatement',
3813
3921
  block: asDetachedNodeForCodeGen(props.block),
3814
3922
  handler: asDetachedNodeForCodeGen(props.handler),
3815
3923
  finalizer: asDetachedNodeForCodeGen(props.finalizer),
3816
3924
  });
3817
- setParentPointersInDirectChildren((node: $FlowFixMe));
3925
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3818
3926
  return node;
3819
3927
  }
3820
3928
 
3821
3929
  export function TupleTypeAnnotation(props: {
3822
3930
  ...TupleTypeAnnotationProps,
3823
- +parent?: ESNode,
3931
+ readonly parent?: ESNode,
3824
3932
  }): DetachedNode<TupleTypeAnnotationType> {
3825
3933
  const node = detachedProps<TupleTypeAnnotationType>(
3826
- (props.parent: $FlowFixMe),
3934
+ props.parent as $FlowFixMe,
3827
3935
  {
3828
3936
  type: 'TupleTypeAnnotation',
3829
3937
  elementTypes: props.elementTypes.map(n => asDetachedNodeForCodeGen(n)),
3830
3938
  inexact: props.inexact,
3831
3939
  },
3832
3940
  );
3833
- setParentPointersInDirectChildren((node: $FlowFixMe));
3941
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3834
3942
  return node;
3835
3943
  }
3836
3944
 
3837
3945
  export function TupleTypeLabeledElement(props: {
3838
3946
  ...TupleTypeLabeledElementProps,
3839
- +parent?: ESNode,
3947
+ readonly parent?: ESNode,
3840
3948
  }): DetachedNode<TupleTypeLabeledElementType> {
3841
3949
  const node = detachedProps<TupleTypeLabeledElementType>(
3842
- (props.parent: $FlowFixMe),
3950
+ props.parent as $FlowFixMe,
3843
3951
  {
3844
3952
  type: 'TupleTypeLabeledElement',
3845
3953
  label: asDetachedNodeForCodeGen(props.label),
@@ -3848,102 +3956,102 @@ export function TupleTypeLabeledElement(props: {
3848
3956
  variance: asDetachedNodeForCodeGen(props.variance),
3849
3957
  },
3850
3958
  );
3851
- setParentPointersInDirectChildren((node: $FlowFixMe));
3959
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3852
3960
  return node;
3853
3961
  }
3854
3962
 
3855
3963
  export function TupleTypeSpreadElement(props: {
3856
3964
  ...TupleTypeSpreadElementProps,
3857
- +parent?: ESNode,
3965
+ readonly parent?: ESNode,
3858
3966
  }): DetachedNode<TupleTypeSpreadElementType> {
3859
3967
  const node = detachedProps<TupleTypeSpreadElementType>(
3860
- (props.parent: $FlowFixMe),
3968
+ props.parent as $FlowFixMe,
3861
3969
  {
3862
3970
  type: 'TupleTypeSpreadElement',
3863
3971
  label: asDetachedNodeForCodeGen(props.label),
3864
3972
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
3865
3973
  },
3866
3974
  );
3867
- setParentPointersInDirectChildren((node: $FlowFixMe));
3975
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3868
3976
  return node;
3869
3977
  }
3870
3978
 
3871
3979
  export function TypeAlias(props: {
3872
3980
  ...TypeAliasProps,
3873
- +parent?: ESNode,
3981
+ readonly parent?: ESNode,
3874
3982
  }): DetachedNode<TypeAliasType> {
3875
- const node = detachedProps<TypeAliasType>((props.parent: $FlowFixMe), {
3983
+ const node = detachedProps<TypeAliasType>(props.parent as $FlowFixMe, {
3876
3984
  type: 'TypeAlias',
3877
3985
  id: asDetachedNodeForCodeGen(props.id),
3878
3986
  typeParameters: asDetachedNodeForCodeGen(props.typeParameters),
3879
3987
  right: asDetachedNodeForCodeGen(props.right),
3880
3988
  });
3881
- setParentPointersInDirectChildren((node: $FlowFixMe));
3989
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3882
3990
  return node;
3883
3991
  }
3884
3992
 
3885
3993
  export function TypeAnnotation(props: {
3886
3994
  ...TypeAnnotationProps,
3887
- +parent?: ESNode,
3995
+ readonly parent?: ESNode,
3888
3996
  }): DetachedNode<TypeAnnotationType> {
3889
- const node = detachedProps<TypeAnnotationType>((props.parent: $FlowFixMe), {
3997
+ const node = detachedProps<TypeAnnotationType>(props.parent as $FlowFixMe, {
3890
3998
  type: 'TypeAnnotation',
3891
3999
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
3892
4000
  });
3893
- setParentPointersInDirectChildren((node: $FlowFixMe));
4001
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3894
4002
  return node;
3895
4003
  }
3896
4004
 
3897
4005
  export function TypeCastExpression(props: {
3898
4006
  ...TypeCastExpressionProps,
3899
- +parent?: ESNode,
4007
+ readonly parent?: ESNode,
3900
4008
  }): DetachedNode<TypeCastExpressionType> {
3901
4009
  const node = detachedProps<TypeCastExpressionType>(
3902
- (props.parent: $FlowFixMe),
4010
+ props.parent as $FlowFixMe,
3903
4011
  {
3904
4012
  type: 'TypeCastExpression',
3905
4013
  expression: asDetachedNodeForCodeGen(props.expression),
3906
4014
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
3907
4015
  },
3908
4016
  );
3909
- setParentPointersInDirectChildren((node: $FlowFixMe));
4017
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3910
4018
  return node;
3911
4019
  }
3912
4020
 
3913
4021
  export function TypeofTypeAnnotation(props: {
3914
4022
  ...TypeofTypeAnnotationProps,
3915
- +parent?: ESNode,
4023
+ readonly parent?: ESNode,
3916
4024
  }): DetachedNode<TypeofTypeAnnotationType> {
3917
4025
  const node = detachedProps<TypeofTypeAnnotationType>(
3918
- (props.parent: $FlowFixMe),
4026
+ props.parent as $FlowFixMe,
3919
4027
  {
3920
4028
  type: 'TypeofTypeAnnotation',
3921
4029
  argument: asDetachedNodeForCodeGen(props.argument),
3922
4030
  typeArguments: asDetachedNodeForCodeGen(props.typeArguments),
3923
4031
  },
3924
4032
  );
3925
- setParentPointersInDirectChildren((node: $FlowFixMe));
4033
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3926
4034
  return node;
3927
4035
  }
3928
4036
 
3929
4037
  export function TypeOperator(props: {
3930
4038
  ...TypeOperatorProps,
3931
- +parent?: ESNode,
4039
+ readonly parent?: ESNode,
3932
4040
  }): DetachedNode<TypeOperatorType> {
3933
- const node = detachedProps<TypeOperatorType>((props.parent: $FlowFixMe), {
4041
+ const node = detachedProps<TypeOperatorType>(props.parent as $FlowFixMe, {
3934
4042
  type: 'TypeOperator',
3935
4043
  operator: props.operator,
3936
4044
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
3937
4045
  });
3938
- setParentPointersInDirectChildren((node: $FlowFixMe));
4046
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3939
4047
  return node;
3940
4048
  }
3941
4049
 
3942
4050
  export function TypeParameter(props: {
3943
4051
  ...TypeParameterProps,
3944
- +parent?: ESNode,
4052
+ readonly parent?: ESNode,
3945
4053
  }): DetachedNode<TypeParameterType> {
3946
- const node = detachedProps<TypeParameterType>((props.parent: $FlowFixMe), {
4054
+ const node = detachedProps<TypeParameterType>(props.parent as $FlowFixMe, {
3947
4055
  type: 'TypeParameter',
3948
4056
  name: props.name,
3949
4057
  const: props.const,
@@ -3952,75 +4060,75 @@ export function TypeParameter(props: {
3952
4060
  default: asDetachedNodeForCodeGen(props.default),
3953
4061
  usesExtendsBound: props.usesExtendsBound,
3954
4062
  });
3955
- setParentPointersInDirectChildren((node: $FlowFixMe));
4063
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3956
4064
  return node;
3957
4065
  }
3958
4066
 
3959
4067
  export function TypeParameterDeclaration(props: {
3960
4068
  ...TypeParameterDeclarationProps,
3961
- +parent?: ESNode,
4069
+ readonly parent?: ESNode,
3962
4070
  }): DetachedNode<TypeParameterDeclarationType> {
3963
4071
  const node = detachedProps<TypeParameterDeclarationType>(
3964
- (props.parent: $FlowFixMe),
4072
+ props.parent as $FlowFixMe,
3965
4073
  {
3966
4074
  type: 'TypeParameterDeclaration',
3967
4075
  params: props.params.map(n => asDetachedNodeForCodeGen(n)),
3968
4076
  },
3969
4077
  );
3970
- setParentPointersInDirectChildren((node: $FlowFixMe));
4078
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3971
4079
  return node;
3972
4080
  }
3973
4081
 
3974
4082
  export function TypeParameterInstantiation(props: {
3975
4083
  ...TypeParameterInstantiationProps,
3976
- +parent?: ESNode,
4084
+ readonly parent?: ESNode,
3977
4085
  }): DetachedNode<TypeParameterInstantiationType> {
3978
4086
  const node = detachedProps<TypeParameterInstantiationType>(
3979
- (props.parent: $FlowFixMe),
4087
+ props.parent as $FlowFixMe,
3980
4088
  {
3981
4089
  type: 'TypeParameterInstantiation',
3982
4090
  params: props.params.map(n => asDetachedNodeForCodeGen(n)),
3983
4091
  },
3984
4092
  );
3985
- setParentPointersInDirectChildren((node: $FlowFixMe));
4093
+ setParentPointersInDirectChildren(node as $FlowFixMe);
3986
4094
  return node;
3987
4095
  }
3988
4096
 
3989
4097
  export function TypePredicate(props: {
3990
4098
  ...TypePredicateProps,
3991
- +parent?: ESNode,
4099
+ readonly parent?: ESNode,
3992
4100
  }): DetachedNode<TypePredicateType> {
3993
- const node = detachedProps<TypePredicateType>((props.parent: $FlowFixMe), {
4101
+ const node = detachedProps<TypePredicateType>(props.parent as $FlowFixMe, {
3994
4102
  type: 'TypePredicate',
3995
4103
  parameterName: asDetachedNodeForCodeGen(props.parameterName),
3996
4104
  typeAnnotation: asDetachedNodeForCodeGen(props.typeAnnotation),
3997
4105
  kind: props.kind,
3998
4106
  });
3999
- setParentPointersInDirectChildren((node: $FlowFixMe));
4107
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4000
4108
  return node;
4001
4109
  }
4002
4110
 
4003
4111
  export function UnaryExpression(props: {
4004
4112
  ...UnaryExpressionProps,
4005
- +parent?: ESNode,
4113
+ readonly parent?: ESNode,
4006
4114
  }): DetachedNode<UnaryExpressionType> {
4007
- const node = detachedProps<UnaryExpressionType>((props.parent: $FlowFixMe), {
4115
+ const node = detachedProps<UnaryExpressionType>(props.parent as $FlowFixMe, {
4008
4116
  type: 'UnaryExpression',
4009
4117
  operator: props.operator,
4010
4118
  argument: asDetachedNodeForCodeGen(props.argument),
4011
4119
  prefix: props.prefix,
4012
4120
  });
4013
- setParentPointersInDirectChildren((node: $FlowFixMe));
4121
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4014
4122
  return node;
4015
4123
  }
4016
4124
 
4017
4125
  export function UndefinedTypeAnnotation(
4018
4126
  props: {
4019
- +parent?: ESNode,
4127
+ readonly parent?: ESNode,
4020
4128
  } = {...null},
4021
4129
  ): DetachedNode<UndefinedTypeAnnotationType> {
4022
4130
  return detachedProps<UndefinedTypeAnnotationType>(
4023
- (props.parent: $FlowFixMe),
4131
+ props.parent as $FlowFixMe,
4024
4132
  {
4025
4133
  type: 'UndefinedTypeAnnotation',
4026
4134
  },
@@ -4029,133 +4137,133 @@ export function UndefinedTypeAnnotation(
4029
4137
 
4030
4138
  export function UnionTypeAnnotation(props: {
4031
4139
  ...UnionTypeAnnotationProps,
4032
- +parent?: ESNode,
4140
+ readonly parent?: ESNode,
4033
4141
  }): DetachedNode<UnionTypeAnnotationType> {
4034
4142
  const node = detachedProps<UnionTypeAnnotationType>(
4035
- (props.parent: $FlowFixMe),
4143
+ props.parent as $FlowFixMe,
4036
4144
  {
4037
4145
  type: 'UnionTypeAnnotation',
4038
4146
  types: props.types.map(n => asDetachedNodeForCodeGen(n)),
4039
4147
  },
4040
4148
  );
4041
- setParentPointersInDirectChildren((node: $FlowFixMe));
4149
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4042
4150
  return node;
4043
4151
  }
4044
4152
 
4045
4153
  export function UnknownTypeAnnotation(
4046
4154
  props: {
4047
- +parent?: ESNode,
4155
+ readonly parent?: ESNode,
4048
4156
  } = {...null},
4049
4157
  ): DetachedNode<UnknownTypeAnnotationType> {
4050
- return detachedProps<UnknownTypeAnnotationType>((props.parent: $FlowFixMe), {
4158
+ return detachedProps<UnknownTypeAnnotationType>(props.parent as $FlowFixMe, {
4051
4159
  type: 'UnknownTypeAnnotation',
4052
4160
  });
4053
4161
  }
4054
4162
 
4055
4163
  export function UpdateExpression(props: {
4056
4164
  ...UpdateExpressionProps,
4057
- +parent?: ESNode,
4165
+ readonly parent?: ESNode,
4058
4166
  }): DetachedNode<UpdateExpressionType> {
4059
- const node = detachedProps<UpdateExpressionType>((props.parent: $FlowFixMe), {
4167
+ const node = detachedProps<UpdateExpressionType>(props.parent as $FlowFixMe, {
4060
4168
  type: 'UpdateExpression',
4061
4169
  operator: props.operator,
4062
4170
  argument: asDetachedNodeForCodeGen(props.argument),
4063
4171
  prefix: props.prefix,
4064
4172
  });
4065
- setParentPointersInDirectChildren((node: $FlowFixMe));
4173
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4066
4174
  return node;
4067
4175
  }
4068
4176
 
4069
4177
  export function VariableDeclaration(props: {
4070
4178
  ...VariableDeclarationProps,
4071
- +parent?: ESNode,
4179
+ readonly parent?: ESNode,
4072
4180
  }): DetachedNode<VariableDeclarationType> {
4073
4181
  const node = detachedProps<VariableDeclarationType>(
4074
- (props.parent: $FlowFixMe),
4182
+ props.parent as $FlowFixMe,
4075
4183
  {
4076
4184
  type: 'VariableDeclaration',
4077
4185
  kind: props.kind,
4078
4186
  declarations: props.declarations.map(n => asDetachedNodeForCodeGen(n)),
4079
4187
  },
4080
4188
  );
4081
- setParentPointersInDirectChildren((node: $FlowFixMe));
4189
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4082
4190
  return node;
4083
4191
  }
4084
4192
 
4085
4193
  export function VariableDeclarator(props: {
4086
4194
  ...VariableDeclaratorProps,
4087
- +parent?: ESNode,
4195
+ readonly parent?: ESNode,
4088
4196
  }): DetachedNode<VariableDeclaratorType> {
4089
4197
  const node = detachedProps<VariableDeclaratorType>(
4090
- (props.parent: $FlowFixMe),
4198
+ props.parent as $FlowFixMe,
4091
4199
  {
4092
4200
  type: 'VariableDeclarator',
4093
4201
  init: asDetachedNodeForCodeGen(props.init),
4094
4202
  id: asDetachedNodeForCodeGen(props.id),
4095
4203
  },
4096
4204
  );
4097
- setParentPointersInDirectChildren((node: $FlowFixMe));
4205
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4098
4206
  return node;
4099
4207
  }
4100
4208
 
4101
4209
  export function Variance(props: {
4102
4210
  ...VarianceProps,
4103
- +parent?: ESNode,
4211
+ readonly parent?: ESNode,
4104
4212
  }): DetachedNode<VarianceType> {
4105
- const node = detachedProps<VarianceType>((props.parent: $FlowFixMe), {
4213
+ const node = detachedProps<VarianceType>(props.parent as $FlowFixMe, {
4106
4214
  type: 'Variance',
4107
4215
  kind: props.kind,
4108
4216
  });
4109
- setParentPointersInDirectChildren((node: $FlowFixMe));
4217
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4110
4218
  return node;
4111
4219
  }
4112
4220
 
4113
4221
  export function VoidTypeAnnotation(
4114
4222
  props: {
4115
- +parent?: ESNode,
4223
+ readonly parent?: ESNode,
4116
4224
  } = {...null},
4117
4225
  ): DetachedNode<VoidTypeAnnotationType> {
4118
- return detachedProps<VoidTypeAnnotationType>((props.parent: $FlowFixMe), {
4226
+ return detachedProps<VoidTypeAnnotationType>(props.parent as $FlowFixMe, {
4119
4227
  type: 'VoidTypeAnnotation',
4120
4228
  });
4121
4229
  }
4122
4230
 
4123
4231
  export function WhileStatement(props: {
4124
4232
  ...WhileStatementProps,
4125
- +parent?: ESNode,
4233
+ readonly parent?: ESNode,
4126
4234
  }): DetachedNode<WhileStatementType> {
4127
- const node = detachedProps<WhileStatementType>((props.parent: $FlowFixMe), {
4235
+ const node = detachedProps<WhileStatementType>(props.parent as $FlowFixMe, {
4128
4236
  type: 'WhileStatement',
4129
4237
  body: asDetachedNodeForCodeGen(props.body),
4130
4238
  test: asDetachedNodeForCodeGen(props.test),
4131
4239
  });
4132
- setParentPointersInDirectChildren((node: $FlowFixMe));
4240
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4133
4241
  return node;
4134
4242
  }
4135
4243
 
4136
4244
  export function WithStatement(props: {
4137
4245
  ...WithStatementProps,
4138
- +parent?: ESNode,
4246
+ readonly parent?: ESNode,
4139
4247
  }): DetachedNode<WithStatementType> {
4140
- const node = detachedProps<WithStatementType>((props.parent: $FlowFixMe), {
4248
+ const node = detachedProps<WithStatementType>(props.parent as $FlowFixMe, {
4141
4249
  type: 'WithStatement',
4142
4250
  object: asDetachedNodeForCodeGen(props.object),
4143
4251
  body: asDetachedNodeForCodeGen(props.body),
4144
4252
  });
4145
- setParentPointersInDirectChildren((node: $FlowFixMe));
4253
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4146
4254
  return node;
4147
4255
  }
4148
4256
 
4149
4257
  export function YieldExpression(props: {
4150
4258
  ...YieldExpressionProps,
4151
- +parent?: ESNode,
4259
+ readonly parent?: ESNode,
4152
4260
  }): DetachedNode<YieldExpressionType> {
4153
- const node = detachedProps<YieldExpressionType>((props.parent: $FlowFixMe), {
4261
+ const node = detachedProps<YieldExpressionType>(props.parent as $FlowFixMe, {
4154
4262
  type: 'YieldExpression',
4155
4263
  argument: asDetachedNodeForCodeGen(props.argument),
4156
4264
  delegate: props.delegate,
4157
4265
  });
4158
- setParentPointersInDirectChildren((node: $FlowFixMe));
4266
+ setParentPointersInDirectChildren(node as $FlowFixMe);
4159
4267
  return node;
4160
4268
  }
4161
4269