@@ -123,6 +123,7 @@ macro_rules! make_ast_visitor {
123
123
}
124
124
125
125
mut_only_visit!{ visit_lazy_tts}
126
+ mut_only_visit!{ visit_delim_args}
126
127
127
128
#[ allow( unused) ]
128
129
macro_rules! try_v {
@@ -315,6 +316,7 @@ macro_rules! make_ast_visitor {
315
316
make_visit!{ AnonConst ; visit_anon_const, walk_anon_const}
316
317
make_visit!{ Arm ; visit_arm, walk_arm}
317
318
make_visit!{ AssocItemConstraint ; visit_assoc_item_constraint, walk_assoc_item_constraint}
319
+ make_visit!{ AttrArgs ; visit_attr_args, walk_attr_args}
318
320
make_visit!{ Attribute ; visit_attribute, walk_attribute}
319
321
make_visit!{ Block ; visit_block, walk_block}
320
322
make_visit!{ CaptureBy ; visit_capture_by, walk_capture_by}
@@ -404,6 +406,26 @@ macro_rules! make_ast_visitor {
404
406
return_result!( V )
405
407
}
406
408
409
+ pub fn walk_attr_args<$( $lt, ) ? V : $trait$( <$lt>) ?>(
410
+ vis: & mut V ,
411
+ args: ref_t!( AttrArgs )
412
+ ) -> result!( V ) {
413
+ match args {
414
+ AttrArgs :: Empty => { }
415
+ AttrArgs :: Delimited ( args) => {
416
+ visit_delim_args!( vis, args) ;
417
+ }
418
+ AttrArgs :: Eq ( eq_span, AttrArgsEq :: Ast ( expr) ) => {
419
+ try_v!( vis. visit_expr( expr) ) ;
420
+ try_v!( visit_span!( vis, eq_span) ) ;
421
+ }
422
+ AttrArgs :: Eq ( _eq_span, AttrArgsEq :: Hir ( lit) ) => {
423
+ unreachable!( "in literal form when visiting mac args eq: {:?}" , lit)
424
+ }
425
+ }
426
+ return_result!( V )
427
+ }
428
+
407
429
pub fn walk_block<$( $lt, ) ? V : $trait$( <$lt>) ?>(
408
430
vis: & mut V ,
409
431
block: ref_t!( Block )
@@ -1646,24 +1668,12 @@ pub mod visit {
1646
1668
let NormalAttr { item, tokens : _ } = & * * normal;
1647
1669
let AttrItem { unsafety : _, path, args, tokens : _ } = item;
1648
1670
try_visit ! ( visitor. visit_path( path, DUMMY_NODE_ID ) ) ;
1649
- try_visit ! ( walk_attr_args ( visitor, args) ) ;
1671
+ try_visit ! ( visitor. visit_attr_args ( args) ) ;
1650
1672
}
1651
1673
AttrKind :: DocComment ( _kind, _sym) => { }
1652
1674
}
1653
1675
V :: Result :: output ( )
1654
1676
}
1655
-
1656
- pub fn walk_attr_args < ' a , V : Visitor < ' a > > ( visitor : & mut V , args : & ' a AttrArgs ) -> V :: Result {
1657
- match args {
1658
- AttrArgs :: Empty => { }
1659
- AttrArgs :: Delimited ( _args) => { }
1660
- AttrArgs :: Eq ( _eq_span, AttrArgsEq :: Ast ( expr) ) => try_visit ! ( visitor. visit_expr( expr) ) ,
1661
- AttrArgs :: Eq ( _eq_span, AttrArgsEq :: Hir ( lit) ) => {
1662
- unreachable ! ( "in literal form when walking mac args eq: {:?}" , lit)
1663
- }
1664
- }
1665
- V :: Result :: output ( )
1666
- }
1667
1677
}
1668
1678
1669
1679
pub mod mut_visit {
@@ -1762,21 +1772,6 @@ pub mod mut_visit {
1762
1772
visit_vec ( bounds, |bound| vis. visit_param_bound ( bound, ctxt) ) ;
1763
1773
}
1764
1774
1765
- // No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
1766
- fn visit_attr_args < T : MutVisitor > ( vis : & mut T , args : & mut AttrArgs ) {
1767
- match args {
1768
- AttrArgs :: Empty => { }
1769
- AttrArgs :: Delimited ( args) => visit_delim_args ( vis, args) ,
1770
- AttrArgs :: Eq ( eq_span, AttrArgsEq :: Ast ( expr) ) => {
1771
- vis. visit_expr ( expr) ;
1772
- vis. visit_span ( eq_span) ;
1773
- }
1774
- AttrArgs :: Eq ( _eq_span, AttrArgsEq :: Hir ( lit) ) => {
1775
- unreachable ! ( "in literal form when visiting mac args eq: {:?}" , lit)
1776
- }
1777
- }
1778
- }
1779
-
1780
1775
// No `noop_` prefix because there isn't a corresponding method in `MutVisitor`.
1781
1776
fn visit_delim_args < T : MutVisitor > ( vis : & mut T , args : & mut DelimArgs ) {
1782
1777
let DelimArgs { dspan, delim : _, tokens } = args;
@@ -1897,7 +1892,7 @@ pub mod mut_visit {
1897
1892
tokens : attr_tokens,
1898
1893
} = & mut * * normal;
1899
1894
vis. visit_path ( path, DUMMY_NODE_ID ) ;
1900
- visit_attr_args ( vis , args) ;
1895
+ vis . visit_attr_args ( args) ;
1901
1896
visit_lazy_tts ( vis, tokens) ;
1902
1897
visit_lazy_tts ( vis, attr_tokens) ;
1903
1898
}
@@ -2080,7 +2075,7 @@ pub mod mut_visit {
2080
2075
token:: NtMeta ( item) => {
2081
2076
let AttrItem { unsafety : _, path, args, tokens } = item. deref_mut ( ) ;
2082
2077
vis. visit_path ( path, DUMMY_NODE_ID ) ;
2083
- visit_attr_args ( vis , args) ;
2078
+ vis . visit_attr_args ( args) ;
2084
2079
visit_lazy_tts ( vis, tokens) ;
2085
2080
}
2086
2081
token:: NtPath ( path) => vis. visit_path ( path, DUMMY_NODE_ID ) ,
0 commit comments