@@ -120,6 +120,7 @@ macro_rules! make_ast_visitor {
120
120
}
121
121
122
122
mut_only_visit!{ visit_lazy_tts}
123
+ mut_only_visit!{ visit_delim_args}
123
124
124
125
macro_rules! try_v {
125
126
( $visit: expr) => {
@@ -309,6 +310,7 @@ macro_rules! make_ast_visitor {
309
310
make_visit!{ AnonConst ; visit_anon_const, walk_anon_const}
310
311
make_visit!{ Arm ; visit_arm, walk_arm}
311
312
make_visit!{ AssocItemConstraint ; visit_assoc_item_constraint, walk_assoc_item_constraint}
313
+ make_visit!{ AttrArgs ; visit_attr_args, walk_attr_args}
312
314
make_visit!{ Attribute ; visit_attribute, walk_attribute}
313
315
make_visit!{ Block ; visit_block, walk_block}
314
316
make_visit!{ CaptureBy ; visit_capture_by, walk_capture_by}
@@ -398,6 +400,26 @@ macro_rules! make_ast_visitor {
398
400
return_result!( V )
399
401
}
400
402
403
+ pub fn walk_attr_args<$( $lt, ) ? V : $trait$( <$lt>) ?>(
404
+ vis: & mut V ,
405
+ args: ref_t!( AttrArgs )
406
+ ) -> result!( V ) {
407
+ match args {
408
+ AttrArgs :: Empty => { }
409
+ AttrArgs :: Delimited ( args) => {
410
+ visit_delim_args!( vis, args) ;
411
+ }
412
+ AttrArgs :: Eq ( eq_span, AttrArgsEq :: Ast ( expr) ) => {
413
+ try_v!( vis. visit_expr( expr) ) ;
414
+ try_v!( visit_span!( vis, eq_span) ) ;
415
+ }
416
+ AttrArgs :: Eq ( _eq_span, AttrArgsEq :: Hir ( lit) ) => {
417
+ unreachable!( "in literal form when visiting mac args eq: {:?}" , lit)
418
+ }
419
+ }
420
+ return_result!( V )
421
+ }
422
+
401
423
pub fn walk_block<$( $lt, ) ? V : $trait$( <$lt>) ?>(
402
424
vis: & mut V ,
403
425
block: ref_t!( Block )
@@ -1640,24 +1662,12 @@ pub mod visit {
1640
1662
let NormalAttr { item, tokens : _ } = & * * normal;
1641
1663
let AttrItem { unsafety : _, path, args, tokens : _ } = item;
1642
1664
try_visit ! ( visitor. visit_path( path, DUMMY_NODE_ID ) ) ;
1643
- try_visit ! ( walk_attr_args ( visitor, args) ) ;
1665
+ try_visit ! ( visitor. visit_attr_args ( args) ) ;
1644
1666
}
1645
1667
AttrKind :: DocComment ( _kind, _sym) => { }
1646
1668
}
1647
1669
V :: Result :: output ( )
1648
1670
}
1649
-
1650
- pub fn walk_attr_args < ' a , V : Visitor < ' a > > ( visitor : & mut V , args : & ' a AttrArgs ) -> V :: Result {
1651
- match args {
1652
- AttrArgs :: Empty => { }
1653
- AttrArgs :: Delimited ( _args) => { }
1654
- AttrArgs :: Eq ( _eq_span, AttrArgsEq :: Ast ( expr) ) => try_visit ! ( visitor. visit_expr( expr) ) ,
1655
- AttrArgs :: Eq ( _eq_span, AttrArgsEq :: Hir ( lit) ) => {
1656
- unreachable ! ( "in literal form when walking mac args eq: {:?}" , lit)
1657
- }
1658
- }
1659
- V :: Result :: output ( )
1660
- }
1661
1671
}
1662
1672
1663
1673
pub mod mut_visit {
@@ -1756,21 +1766,6 @@ pub mod mut_visit {
1756
1766
visit_vec ( bounds, |bound| vis. visit_param_bound ( bound, ctxt) ) ;
1757
1767
}
1758
1768
1759
- // No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
1760
- fn visit_attr_args < T : MutVisitor > ( vis : & mut T , args : & mut AttrArgs ) {
1761
- match args {
1762
- AttrArgs :: Empty => { }
1763
- AttrArgs :: Delimited ( args) => visit_delim_args ( vis, args) ,
1764
- AttrArgs :: Eq ( eq_span, AttrArgsEq :: Ast ( expr) ) => {
1765
- vis. visit_expr ( expr) ;
1766
- vis. visit_span ( eq_span) ;
1767
- }
1768
- AttrArgs :: Eq ( _eq_span, AttrArgsEq :: Hir ( lit) ) => {
1769
- unreachable ! ( "in literal form when visiting mac args eq: {:?}" , lit)
1770
- }
1771
- }
1772
- }
1773
-
1774
1769
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
1775
1770
fn visit_delim_args < T : MutVisitor > ( vis : & mut T , args : & mut DelimArgs ) {
1776
1771
let DelimArgs { dspan, delim : _, tokens } = args;
@@ -1891,7 +1886,7 @@ pub mod mut_visit {
1891
1886
tokens : attr_tokens,
1892
1887
} = & mut * * normal;
1893
1888
vis. visit_path ( path, DUMMY_NODE_ID ) ;
1894
- visit_attr_args ( vis , args) ;
1889
+ vis . visit_attr_args ( args) ;
1895
1890
visit_lazy_tts ( vis, tokens) ;
1896
1891
visit_lazy_tts ( vis, attr_tokens) ;
1897
1892
}
@@ -2074,7 +2069,7 @@ pub mod mut_visit {
2074
2069
token:: NtMeta ( item) => {
2075
2070
let AttrItem { unsafety : _, path, args, tokens } = item. deref_mut ( ) ;
2076
2071
vis. visit_path ( path, DUMMY_NODE_ID ) ;
2077
- visit_attr_args ( vis , args) ;
2072
+ vis . visit_attr_args ( args) ;
2078
2073
visit_lazy_tts ( vis, tokens) ;
2079
2074
}
2080
2075
token:: NtPath ( path) => vis. visit_path ( path, DUMMY_NODE_ID ) ,
0 commit comments