@@ -955,6 +955,59 @@ macro_rules! make_ast_visitor {
955
955
return_result!( V )
956
956
}
957
957
958
+ pub fn walk_pat<$( $lt, ) ? V : $trait$( <$lt>) ?>(
959
+ vis: & mut V ,
960
+ pattern: ref_t!( Pat )
961
+ ) -> result!( V ) {
962
+ let Pat { id, kind, span, tokens } = pattern;
963
+ try_v!( visit_id!( vis, id) ) ;
964
+ match kind {
965
+ PatKind :: Err ( _guar) => { }
966
+ PatKind :: Wild | PatKind :: Rest | PatKind :: Never => { }
967
+ PatKind :: Ident ( _binding_mode, ident, sub) => {
968
+ try_v!( visit_ident!( vis, ident) ) ;
969
+ visit_o!( sub, |sub| vis. visit_pat( sub) ) ;
970
+ }
971
+ PatKind :: Lit ( e) => {
972
+ try_v!( vis. visit_expr( e) ) ;
973
+ }
974
+ PatKind :: TupleStruct ( qself, path, elems) => {
975
+ try_v!( vis. visit_qself( qself) ) ;
976
+ try_v!( vis. visit_path( path, * id) ) ;
977
+ visit_list!( vis, visit_pat, elems) ;
978
+ }
979
+ PatKind :: Path ( qself, path) => {
980
+ try_v!( vis. visit_qself( qself) ) ;
981
+ try_v!( vis. visit_path( path, * id) ) ;
982
+ }
983
+ PatKind :: Struct ( qself, path, fields, _etc) => {
984
+ try_v!( vis. visit_qself( qself) ) ;
985
+ try_v!( vis. visit_path( path, * id) ) ;
986
+ visit_list!( vis, visit_pat_field, flat_map_pat_field, fields) ;
987
+ }
988
+ PatKind :: Box ( inner) | PatKind :: Deref ( inner) | PatKind :: Paren ( inner) => {
989
+ try_v!( vis. visit_pat( inner) ) ;
990
+ }
991
+ PatKind :: Ref ( inner, _mutbl) => {
992
+ try_v!( vis. visit_pat( inner) ) ;
993
+ }
994
+ PatKind :: Range ( e1, e2, Spanned { span, node: _ } ) => {
995
+ visit_o!( e1, |e| vis. visit_expr( e) ) ;
996
+ visit_o!( e2, |e| vis. visit_expr( e) ) ;
997
+ try_v!( visit_span!( vis, span) ) ;
998
+ }
999
+ PatKind :: Tuple ( elems) | PatKind :: Slice ( elems) | PatKind :: Or ( elems) => {
1000
+ visit_list!( vis, visit_pat, elems) ;
1001
+ }
1002
+ PatKind :: MacCall ( mac) => {
1003
+ try_v!( vis. visit_mac_call( mac) ) ;
1004
+ }
1005
+ }
1006
+ visit_lazy_tts!( vis, tokens) ;
1007
+ try_v!( visit_span!( vis, span) ) ;
1008
+ return_result!( V )
1009
+ }
1010
+
958
1011
make_walk_flat_map!{ Arm , walk_flat_map_arm, visit_arm}
959
1012
make_walk_flat_map!{ Attribute , walk_flat_map_attribute, visit_attribute}
960
1013
make_walk_flat_map!{ ExprField , walk_flat_map_expr_field, visit_expr_field}
@@ -987,6 +1040,7 @@ pub mod visit {
987
1040
pub use rustc_ast_ir:: { try_visit, visit_opt, walk_list, walk_visitable_list} ;
988
1041
use rustc_span:: symbol:: Ident ;
989
1042
use rustc_span:: Span ;
1043
+ use rustc_span:: source_map:: Spanned ;
990
1044
991
1045
use crate :: ast:: * ;
992
1046
use crate :: ptr:: P ;
@@ -1279,48 +1333,6 @@ pub mod visit {
1279
1333
V :: Result :: output ( )
1280
1334
}
1281
1335
1282
- pub fn walk_pat < ' a , V : Visitor < ' a > > ( visitor : & mut V , pattern : & ' a Pat ) -> V :: Result {
1283
- let Pat { id, kind, span : _, tokens : _ } = pattern;
1284
- match kind {
1285
- PatKind :: TupleStruct ( opt_qself, path, elems) => {
1286
- try_visit ! ( visitor. visit_qself( opt_qself) ) ;
1287
- try_visit ! ( visitor. visit_path( path, * id) ) ;
1288
- walk_list ! ( visitor, visit_pat, elems) ;
1289
- }
1290
- PatKind :: Path ( opt_qself, path) => {
1291
- try_visit ! ( visitor. visit_qself( opt_qself) ) ;
1292
- try_visit ! ( visitor. visit_path( path, * id) )
1293
- }
1294
- PatKind :: Struct ( opt_qself, path, fields, _rest) => {
1295
- try_visit ! ( visitor. visit_qself( opt_qself) ) ;
1296
- try_visit ! ( visitor. visit_path( path, * id) ) ;
1297
- walk_list ! ( visitor, visit_pat_field, fields) ;
1298
- }
1299
- PatKind :: Box ( subpattern) | PatKind :: Deref ( subpattern) | PatKind :: Paren ( subpattern) => {
1300
- try_visit ! ( visitor. visit_pat( subpattern) ) ;
1301
- }
1302
- PatKind :: Ref ( subpattern, _ /*mutbl*/ ) => {
1303
- try_visit ! ( visitor. visit_pat( subpattern) ) ;
1304
- }
1305
- PatKind :: Ident ( _bmode, ident, optional_subpattern) => {
1306
- try_visit ! ( visitor. visit_ident( * ident) ) ;
1307
- visit_opt ! ( visitor, visit_pat, optional_subpattern) ;
1308
- }
1309
- PatKind :: Lit ( expression) => try_visit ! ( visitor. visit_expr( expression) ) ,
1310
- PatKind :: Range ( lower_bound, upper_bound, _end) => {
1311
- visit_opt ! ( visitor, visit_expr, lower_bound) ;
1312
- visit_opt ! ( visitor, visit_expr, upper_bound) ;
1313
- }
1314
- PatKind :: Wild | PatKind :: Rest | PatKind :: Never => { }
1315
- PatKind :: Err ( _guar) => { }
1316
- PatKind :: Tuple ( elems) | PatKind :: Slice ( elems) | PatKind :: Or ( elems) => {
1317
- walk_list ! ( visitor, visit_pat, elems) ;
1318
- }
1319
- PatKind :: MacCall ( mac) => try_visit ! ( visitor. visit_mac_call( mac) ) ,
1320
- }
1321
- V :: Result :: output ( )
1322
- }
1323
-
1324
1336
impl WalkItemKind for ForeignItemKind {
1325
1337
fn walk < ' a , V : Visitor < ' a > > (
1326
1338
& ' a self ,
@@ -2534,49 +2546,6 @@ pub mod mut_visit {
2534
2546
}
2535
2547
}
2536
2548
2537
- pub fn walk_pat < T : MutVisitor > ( vis : & mut T , pat : & mut P < Pat > ) {
2538
- let Pat { id, kind, span, tokens } = pat. deref_mut ( ) ;
2539
- vis. visit_id ( id) ;
2540
- match kind {
2541
- PatKind :: Err ( _guar) => { }
2542
- PatKind :: Wild | PatKind :: Rest | PatKind :: Never => { }
2543
- PatKind :: Ident ( _binding_mode, ident, sub) => {
2544
- vis. visit_ident ( ident) ;
2545
- visit_opt ( sub, |sub| vis. visit_pat ( sub) ) ;
2546
- }
2547
- PatKind :: Lit ( e) => vis. visit_expr ( e) ,
2548
- PatKind :: TupleStruct ( qself, path, elems) => {
2549
- vis. visit_qself ( qself) ;
2550
- vis. visit_path ( path, * id) ;
2551
- visit_thin_vec ( elems, |elem| vis. visit_pat ( elem) ) ;
2552
- }
2553
- PatKind :: Path ( qself, path) => {
2554
- vis. visit_qself ( qself) ;
2555
- vis. visit_path ( path, * id) ;
2556
- }
2557
- PatKind :: Struct ( qself, path, fields, _etc) => {
2558
- vis. visit_qself ( qself) ;
2559
- vis. visit_path ( path, * id) ;
2560
- fields. flat_map_in_place ( |field| vis. flat_map_pat_field ( field) ) ;
2561
- }
2562
- PatKind :: Box ( inner) => vis. visit_pat ( inner) ,
2563
- PatKind :: Deref ( inner) => vis. visit_pat ( inner) ,
2564
- PatKind :: Ref ( inner, _mutbl) => vis. visit_pat ( inner) ,
2565
- PatKind :: Range ( e1, e2, Spanned { span : _, node : _ } ) => {
2566
- visit_opt ( e1, |e| vis. visit_expr ( e) ) ;
2567
- visit_opt ( e2, |e| vis. visit_expr ( e) ) ;
2568
- vis. visit_span ( span) ;
2569
- }
2570
- PatKind :: Tuple ( elems) | PatKind :: Slice ( elems) | PatKind :: Or ( elems) => {
2571
- visit_thin_vec ( elems, |elem| vis. visit_pat ( elem) )
2572
- }
2573
- PatKind :: Paren ( inner) => vis. visit_pat ( inner) ,
2574
- PatKind :: MacCall ( mac) => vis. visit_mac_call ( mac) ,
2575
- }
2576
- visit_lazy_tts ( vis, tokens) ;
2577
- vis. visit_span ( span) ;
2578
- }
2579
-
2580
2549
fn walk_inline_asm_sym < T : MutVisitor > (
2581
2550
vis : & mut T ,
2582
2551
InlineAsmSym { id, qself, path } : & mut InlineAsmSym ,
0 commit comments