311
}
312
}
313
314
-fn visit_json_vec(vals: &mut [serde_json::Value], si: &ScopeInfo) {
314
+fn visit_raw(val: &mut react_compiler_ast::common::RawNode, si: &ScopeInfo) {
315
+ let mut v = val.parse_value();
316
+ visit_json(&mut v, si);
317
+ *val = react_compiler_ast::common::RawNode::from_value(&v);
318
+}
319
+
320
+fn visit_json_vec(vals: &mut [react_compiler_ast::common::RawNode], si: &ScopeInfo) {
321
for val in vals.iter_mut() {
316
- visit_json(val, si);
322
+ visit_raw(val, si);
323
}
324
}
325
320
-fn visit_json_opt(val: &mut Option<Box<serde_json::Value>>, si: &ScopeInfo) {
326
+fn visit_json_opt(val: &mut Option<react_compiler_ast::common::RawNode>, si: &ScopeInfo) {
327
if let Some(v) = val {
322
- visit_json(v, si);
328
+ visit_raw(v, si);
329
}
330
}
331
431
Statement::ExportDefaultDeclaration(d) => visit_export_default(d, si),
432
Statement::TSTypeAliasDeclaration(d) => {
433
rename_id(&mut d.id, si);
428
- visit_json(&mut d.type_annotation, si);
434
+ visit_raw(&mut d.type_annotation, si);
435
visit_json_opt(&mut d.type_parameters, si);
436
}
437
Statement::TSInterfaceDeclaration(d) => {
438
rename_id(&mut d.id, si);
433
- visit_json(&mut d.body, si);
439
+ visit_raw(&mut d.body, si);
440
visit_json_opt(&mut d.type_parameters, si);
441
if let Some(ext) = &mut d.extends {
442
visit_json_vec(ext, si);
447
visit_json_vec(&mut d.members, si);
448
}
449
Statement::TSModuleDeclaration(d) => {
444
- visit_json(&mut d.id, si);
445
- visit_json(&mut d.body, si);
450
+ visit_raw(&mut d.id, si);
451
+ visit_raw(&mut d.body, si);
452
}
453
Statement::TSDeclareFunction(d) => {
454
if let Some(id) = &mut d.id {
460
}
461
Statement::TypeAlias(d) => {
462
rename_id(&mut d.id, si);
457
- visit_json(&mut d.right, si);
463
+ visit_raw(&mut d.right, si);
464
visit_json_opt(&mut d.type_parameters, si);
465
}
466
Statement::OpaqueType(d) => {
467
rename_id(&mut d.id, si);
468
if let Some(st) = &mut d.supertype {
463
- visit_json(st, si);
469
+ visit_raw(st, si);
470
}
465
- visit_json(&mut d.impltype, si);
471
+ visit_raw(&mut d.impltype, si);
472
visit_json_opt(&mut d.type_parameters, si);
473
}
474
Statement::InterfaceDeclaration(d) => {
475
rename_id(&mut d.id, si);
470
- visit_json(&mut d.body, si);
476
+ visit_raw(&mut d.body, si);
477
visit_json_opt(&mut d.type_parameters, si);
478
if let Some(ext) = &mut d.extends {
479
visit_json_vec(ext, si);
483
Statement::DeclareFunction(d) => {
484
rename_id(&mut d.id, si);
485
if let Some(pred) = &mut d.predicate {
480
- visit_json(pred, si);
486
+ visit_raw(pred, si);
487
}
488
}
489
Statement::DeclareClass(d) => {
490
rename_id(&mut d.id, si);
485
- visit_json(&mut d.body, si);
491
+ visit_raw(&mut d.body, si);
492
visit_json_opt(&mut d.type_parameters, si);
493
if let Some(ext) = &mut d.extends {
494
visit_json_vec(ext, si);
495
}
496
}
497
Statement::DeclareModule(d) => {
492
- visit_json(&mut d.id, si);
493
- visit_json(&mut d.body, si);
498
+ visit_raw(&mut d.id, si);
499
+ visit_raw(&mut d.body, si);
500
}
495
- Statement::DeclareModuleExports(d) => visit_json(&mut d.type_annotation, si),
501
+ Statement::DeclareModuleExports(d) => visit_raw(&mut d.type_annotation, si),
502
Statement::DeclareExportDeclaration(d) => {
503
if let Some(decl) = &mut d.declaration {
498
- visit_json(decl, si);
504
+ visit_raw(decl, si);
505
}
506
if let Some(specs) = &mut d.specifiers {
507
visit_json_vec(specs, si);
509
}
510
Statement::DeclareInterface(d) => {
511
rename_id(&mut d.id, si);
506
- visit_json(&mut d.body, si);
512
+ visit_raw(&mut d.body, si);
513
visit_json_opt(&mut d.type_parameters, si);
514
if let Some(ext) = &mut d.extends {
515
visit_json_vec(ext, si);
517
}
518
Statement::DeclareTypeAlias(d) => {
519
rename_id(&mut d.id, si);
514
- visit_json(&mut d.right, si);
520
+ visit_raw(&mut d.right, si);
521
visit_json_opt(&mut d.type_parameters, si);
522
}
523
Statement::DeclareOpaqueType(d) => {
524
rename_id(&mut d.id, si);
525
if let Some(st) = &mut d.supertype {
520
- visit_json(st, si);
526
+ visit_raw(st, si);
527
}
528
if let Some(impl_) = &mut d.impltype {
523
- visit_json(impl_, si);
529
+ visit_raw(impl_, si);
530
}
531
visit_json_opt(&mut d.type_parameters, si);
532
}
533
Statement::EnumDeclaration(d) => {
534
rename_id(&mut d.id, si);
529
- visit_json(&mut d.body, si);
535
+ visit_raw(&mut d.body, si);
536
}
537
Statement::Unknown(d) => {
532
- d.with_raw_mut(|raw| visit_json(raw, si))
538
+ d.with_raw_mut(|raw| visit_raw(raw, si))
539
.expect("identifier rename preserves the node `type`");
540
}
541
Statement::BreakStatement(_)
707
}
708
Expression::TSAsExpression(e) => {
709
visit_expr(&mut e.expression, si);
704
- visit_json(&mut e.type_annotation, si);
710
+ visit_raw(&mut e.type_annotation, si);
711
}
712
Expression::TSSatisfiesExpression(e) => {
713
visit_expr(&mut e.expression, si);
708
- visit_json(&mut e.type_annotation, si);
714
+ visit_raw(&mut e.type_annotation, si);
715
}
716
Expression::TSNonNullExpression(e) => visit_expr(&mut e.expression, si),
717
Expression::TSTypeAssertion(e) => {
718
visit_expr(&mut e.expression, si);
713
- visit_json(&mut e.type_annotation, si);
719
+ visit_raw(&mut e.type_annotation, si);
720
}
721
Expression::TSInstantiationExpression(e) => {
722
visit_expr(&mut e.expression, si);
717
- visit_json(&mut e.type_parameters, si);
723
+ visit_raw(&mut e.type_parameters, si);
724
}
725
Expression::TypeCastExpression(e) => {
726
visit_expr(&mut e.expression, si);
721
- visit_json(&mut e.type_annotation, si);
727
+ visit_raw(&mut e.type_annotation, si);
728
}
729
Expression::JSXElement(e) => visit_jsx_element(e, si),
730
Expression::JSXFragment(f) => {
785
}
786
PatternLike::TSAsExpression(e) => {
787
visit_expr(&mut e.expression, si);
782
- visit_json(&mut e.type_annotation, si);
788
+ visit_raw(&mut e.type_annotation, si);
789
}
790
PatternLike::TSSatisfiesExpression(e) => {
791
visit_expr(&mut e.expression, si);
786
- visit_json(&mut e.type_annotation, si);
792
+ visit_raw(&mut e.type_annotation, si);
793
}
794
PatternLike::TSNonNullExpression(e) => {
795
visit_expr(&mut e.expression, si);
796
}
797
PatternLike::TSTypeAssertion(e) => {
798
visit_expr(&mut e.expression, si);
793
- visit_json(&mut e.type_annotation, si);
799
+ visit_raw(&mut e.type_annotation, si);
800
}
801
PatternLike::TypeCastExpression(e) => {
802
visit_expr(&mut e.expression, si);
797
- visit_json(&mut e.type_annotation, si);
803
+ visit_raw(&mut e.type_annotation, si);
804
}
805
}
806
}
899
Declaration::VariableDeclaration(v) => visit_var_decl(v, si),
900
Declaration::TSTypeAliasDeclaration(d) => {
901
rename_id(&mut d.id, si);
896
- visit_json(&mut d.type_annotation, si);
902
+ visit_raw(&mut d.type_annotation, si);
903
visit_json_opt(&mut d.type_parameters, si);
904
}
905
Declaration::TSInterfaceDeclaration(d) => {
906
rename_id(&mut d.id, si);
901
- visit_json(&mut d.body, si);
907
+ visit_raw(&mut d.body, si);
908
visit_json_opt(&mut d.type_parameters, si);
909
if let Some(ext) = &mut d.extends {
910
visit_json_vec(ext, si);
915
visit_json_vec(&mut d.members, si);
916
}
917
Declaration::TSModuleDeclaration(d) => {
912
- visit_json(&mut d.id, si);
913
- visit_json(&mut d.body, si);
918
+ visit_raw(&mut d.id, si);
919
+ visit_raw(&mut d.body, si);
920
}
921
Declaration::TSDeclareFunction(d) => {
922
if let Some(id) = &mut d.id {
928
}
929
Declaration::TypeAlias(d) => {
930
rename_id(&mut d.id, si);
925
- visit_json(&mut d.right, si);
931
+ visit_raw(&mut d.right, si);
932
visit_json_opt(&mut d.type_parameters, si);
933
}
934
Declaration::OpaqueType(d) => {
935
rename_id(&mut d.id, si);
936
if let Some(st) = &mut d.supertype {
931
- visit_json(st, si);
937
+ visit_raw(st, si);
938
}
933
- visit_json(&mut d.impltype, si);
939
+ visit_raw(&mut d.impltype, si);
940
visit_json_opt(&mut d.type_parameters, si);
941
}
942
Declaration::InterfaceDeclaration(d) => {
943
rename_id(&mut d.id, si);
938
- visit_json(&mut d.body, si);
944
+ visit_raw(&mut d.body, si);
945
visit_json_opt(&mut d.type_parameters, si);
946
if let Some(ext) = &mut d.extends {
947
visit_json_vec(ext, si);
949
}
950
Declaration::EnumDeclaration(d) => {
951
rename_id(&mut d.id, si);
946
- visit_json(&mut d.body, si);
952
+ visit_raw(&mut d.body, si);
953
}
954
}
955
}