@@ -766,6 +766,46 @@ macro_rules! make_ast_visitor {
766
766
return_result!( V )
767
767
}
768
768
769
+ pub fn walk_inline_asm<$( $lt, ) ? V : $trait$( <$lt>) ?>(
770
+ vis: & mut V ,
771
+ asm: ref_t!( InlineAsm )
772
+ ) -> result!( V ) {
773
+ // FIXME: Visit spans inside all this currently ignored stuff.
774
+ let InlineAsm {
775
+ template: _,
776
+ template_strs: _,
777
+ operands,
778
+ clobber_abis: _,
779
+ options: _,
780
+ line_spans: _,
781
+ } = asm;
782
+ for ( op, span) in operands {
783
+ match op {
784
+ InlineAsmOperand :: In { expr, reg: _ }
785
+ | InlineAsmOperand :: Out { expr: Some ( expr) , reg: _, late: _ }
786
+ | InlineAsmOperand :: InOut { expr, reg: _, late: _ } => {
787
+ try_v!( vis. visit_expr( expr) ) ;
788
+ }
789
+ InlineAsmOperand :: Out { expr: None , reg: _, late: _ } => { }
790
+ InlineAsmOperand :: SplitInOut { in_expr, out_expr, reg: _, late: _ } => {
791
+ try_v!( vis. visit_expr( in_expr) ) ;
792
+ visit_o!( out_expr, |out_expr| vis. visit_expr( out_expr) ) ;
793
+ }
794
+ InlineAsmOperand :: Const { anon_const } => {
795
+ try_v!( vis. visit_anon_const( anon_const) ) ;
796
+ }
797
+ InlineAsmOperand :: Sym { sym } => {
798
+ try_v!( vis. visit_inline_asm_sym( sym) ) ;
799
+ }
800
+ InlineAsmOperand :: Label { block } => {
801
+ try_v!( vis. visit_block( block) ) ;
802
+ }
803
+ }
804
+ try_v!( visit_span!( vis, span) ) ;
805
+ }
806
+ return_result!( V )
807
+ }
808
+
769
809
make_walk_flat_map!{ Arm , walk_flat_map_arm, visit_arm}
770
810
make_walk_flat_map!{ Attribute , walk_flat_map_attribute, visit_attribute}
771
811
make_walk_flat_map!{ ExprField , walk_flat_map_expr_field, visit_expr_field}
@@ -1441,37 +1481,6 @@ pub mod visit {
1441
1481
visitor. visit_path ( path, DUMMY_NODE_ID )
1442
1482
}
1443
1483
1444
- pub fn walk_inline_asm < ' a , V : Visitor < ' a > > ( visitor : & mut V , asm : & ' a InlineAsm ) -> V :: Result {
1445
- let InlineAsm {
1446
- template : _,
1447
- template_strs : _,
1448
- operands,
1449
- clobber_abis : _,
1450
- options : _,
1451
- line_spans : _,
1452
- } = asm;
1453
- for ( op, _span) in operands {
1454
- match op {
1455
- InlineAsmOperand :: In { expr, reg : _ }
1456
- | InlineAsmOperand :: Out { expr : Some ( expr) , reg : _, late : _ }
1457
- | InlineAsmOperand :: InOut { expr, reg : _, late : _ } => {
1458
- try_visit ! ( visitor. visit_expr( expr) )
1459
- }
1460
- InlineAsmOperand :: Out { expr : None , reg : _, late : _ } => { }
1461
- InlineAsmOperand :: SplitInOut { in_expr, out_expr, reg : _, late : _ } => {
1462
- try_visit ! ( visitor. visit_expr( in_expr) ) ;
1463
- visit_opt ! ( visitor, visit_expr, out_expr) ;
1464
- }
1465
- InlineAsmOperand :: Const { anon_const } => {
1466
- try_visit ! ( visitor. visit_anon_const( anon_const) )
1467
- }
1468
- InlineAsmOperand :: Sym { sym } => try_visit ! ( visitor. visit_inline_asm_sym( sym) ) ,
1469
- InlineAsmOperand :: Label { block } => try_visit ! ( visitor. visit_block( block) ) ,
1470
- }
1471
- }
1472
- V :: Result :: output ( )
1473
- }
1474
-
1475
1484
pub fn walk_inline_asm_sym < ' a , V : Visitor < ' a > > (
1476
1485
visitor : & mut V ,
1477
1486
InlineAsmSym { id, qself, path } : & ' a InlineAsmSym ,
@@ -2608,36 +2617,6 @@ pub mod mut_visit {
2608
2617
vis. visit_span ( span) ;
2609
2618
}
2610
2619
2611
- fn walk_inline_asm < T : MutVisitor > ( vis : & mut T , asm : & mut InlineAsm ) {
2612
- // FIXME: Visit spans inside all this currently ignored stuff.
2613
- let InlineAsm {
2614
- template : _,
2615
- template_strs : _,
2616
- operands,
2617
- clobber_abis : _,
2618
- options : _,
2619
- line_spans : _,
2620
- } = asm;
2621
- for ( op, span) in operands {
2622
- match op {
2623
- InlineAsmOperand :: In { expr, reg : _ }
2624
- | InlineAsmOperand :: Out { expr : Some ( expr) , reg : _, late : _ }
2625
- | InlineAsmOperand :: InOut { expr, reg : _, late : _ } => vis. visit_expr ( expr) ,
2626
- InlineAsmOperand :: Out { expr : None , reg : _, late : _ } => { }
2627
- InlineAsmOperand :: SplitInOut { in_expr, out_expr, reg : _, late : _ } => {
2628
- vis. visit_expr ( in_expr) ;
2629
- if let Some ( out_expr) = out_expr {
2630
- vis. visit_expr ( out_expr) ;
2631
- }
2632
- }
2633
- InlineAsmOperand :: Const { anon_const } => vis. visit_anon_const ( anon_const) ,
2634
- InlineAsmOperand :: Sym { sym } => vis. visit_inline_asm_sym ( sym) ,
2635
- InlineAsmOperand :: Label { block } => vis. visit_block ( block) ,
2636
- }
2637
- vis. visit_span ( span) ;
2638
- }
2639
- }
2640
-
2641
2620
fn walk_inline_asm_sym < T : MutVisitor > (
2642
2621
vis : & mut T ,
2643
2622
InlineAsmSym { id, qself, path } : & mut InlineAsmSym ,
0 commit comments