14
14
//! those that are created by the expansion of a macro.
15
15
16
16
use crate :: ast:: * ;
17
+ use crate :: ptr:: P ;
17
18
18
19
use rustc_span:: symbol:: Ident ;
19
20
use rustc_span:: Span ;
@@ -298,40 +299,45 @@ pub trait Visitor<'ast>: Sized {
298
299
}
299
300
300
301
pub fn walk_crate < ' a , V : Visitor < ' a > > ( visitor : & mut V , krate : & ' a Crate ) -> V :: Result {
301
- walk_list ! ( visitor, visit_attribute, & krate. attrs) ;
302
- walk_list ! ( visitor, visit_item, & krate. items) ;
302
+ let Crate { attrs, items, spans : _, id : _, is_placeholder : _ } = krate;
303
+ walk_list ! ( visitor, visit_attribute, attrs) ;
304
+ walk_list ! ( visitor, visit_item, items) ;
303
305
V :: Result :: output ( )
304
306
}
305
307
306
308
pub fn walk_local < ' a , V : Visitor < ' a > > ( visitor : & mut V , local : & ' a Local ) -> V :: Result {
307
- walk_list ! ( visitor, visit_attribute, & local. attrs) ;
308
- try_visit ! ( visitor. visit_pat( & local. pat) ) ;
309
- visit_opt ! ( visitor, visit_ty, & local. ty) ;
310
- if let Some ( ( init, els) ) = local. kind . init_else_opt ( ) {
309
+ let Local { id : _, pat, ty, kind, span : _, colon_sp : _, attrs, tokens : _ } = local;
310
+ walk_list ! ( visitor, visit_attribute, attrs) ;
311
+ try_visit ! ( visitor. visit_pat( pat) ) ;
312
+ visit_opt ! ( visitor, visit_ty, ty) ;
313
+ if let Some ( ( init, els) ) = kind. init_else_opt ( ) {
311
314
try_visit ! ( visitor. visit_expr( init) ) ;
312
315
visit_opt ! ( visitor, visit_block, els) ;
313
316
}
314
317
V :: Result :: output ( )
315
318
}
316
319
317
- pub fn walk_label < ' a , V : Visitor < ' a > > ( visitor : & mut V , label : & ' a Label ) -> V :: Result {
318
- visitor. visit_ident ( label . ident )
320
+ pub fn walk_label < ' a , V : Visitor < ' a > > ( visitor : & mut V , Label { ident } : & ' a Label ) -> V :: Result {
321
+ visitor. visit_ident ( * ident)
319
322
}
320
323
321
324
pub fn walk_lifetime < ' a , V : Visitor < ' a > > ( visitor : & mut V , lifetime : & ' a Lifetime ) -> V :: Result {
322
- visitor. visit_ident ( lifetime. ident )
325
+ let Lifetime { id : _, ident } = lifetime;
326
+ visitor. visit_ident ( * ident)
323
327
}
324
328
325
329
pub fn walk_poly_trait_ref < ' a , V > ( visitor : & mut V , trait_ref : & ' a PolyTraitRef ) -> V :: Result
326
330
where
327
331
V : Visitor < ' a > ,
328
332
{
329
- walk_list ! ( visitor, visit_generic_param, & trait_ref. bound_generic_params) ;
330
- visitor. visit_trait_ref ( & trait_ref. trait_ref )
333
+ let PolyTraitRef { bound_generic_params, trait_ref, span : _ } = trait_ref;
334
+ walk_list ! ( visitor, visit_generic_param, bound_generic_params) ;
335
+ visitor. visit_trait_ref ( trait_ref)
331
336
}
332
337
333
338
pub fn walk_trait_ref < ' a , V : Visitor < ' a > > ( visitor : & mut V , trait_ref : & ' a TraitRef ) -> V :: Result {
334
- visitor. visit_path ( & trait_ref. path , trait_ref. ref_id )
339
+ let TraitRef { path, ref_id } = trait_ref;
340
+ visitor. visit_path ( path, * ref_id)
335
341
}
336
342
337
343
impl WalkItemKind for ItemKind {
@@ -341,9 +347,10 @@ impl WalkItemKind for ItemKind {
341
347
_ctxt : AssocCtxt ,
342
348
visitor : & mut V ,
343
349
) -> V :: Result {
350
+ let Item { id, span, vis, ident, .. } = item;
344
351
match self {
345
- ItemKind :: ExternCrate ( _ ) => { }
346
- ItemKind :: Use ( use_tree) => try_visit ! ( visitor. visit_use_tree( use_tree, item . id, false ) ) ,
352
+ ItemKind :: ExternCrate ( _rename ) => { }
353
+ ItemKind :: Use ( use_tree) => try_visit ! ( visitor. visit_use_tree( use_tree, * id, false ) ) ,
347
354
ItemKind :: Static ( box StaticItem { ty, safety : _, mutability : _, expr } ) => {
348
355
try_visit ! ( visitor. visit_ty( ty) ) ;
349
356
visit_opt ! ( visitor, visit_expr, expr) ;
@@ -354,21 +361,26 @@ impl WalkItemKind for ItemKind {
354
361
visit_opt ! ( visitor, visit_expr, expr) ;
355
362
}
356
363
ItemKind :: Fn ( box Fn { defaultness : _, generics, sig, body } ) => {
357
- let kind =
358
- FnKind :: Fn ( FnCtxt :: Free , item. ident , sig, & item. vis , generics, body. as_deref ( ) ) ;
359
- try_visit ! ( visitor. visit_fn( kind, item. span, item. id) ) ;
364
+ let kind = FnKind :: Fn ( FnCtxt :: Free , * ident, sig, vis, generics, body. as_deref ( ) ) ;
365
+ try_visit ! ( visitor. visit_fn( kind, * span, * id) ) ;
360
366
}
361
367
ItemKind :: Mod ( _unsafety, mod_kind) => match mod_kind {
362
368
ModKind :: Loaded ( items, _inline, _inner_span) => {
363
369
walk_list ! ( visitor, visit_item, items) ;
364
370
}
365
371
ModKind :: Unloaded => { }
366
372
} ,
367
- ItemKind :: ForeignMod ( foreign_module ) => {
368
- walk_list ! ( visitor, visit_foreign_item, & foreign_module . items) ;
373
+ ItemKind :: ForeignMod ( ForeignMod { safety : _ , abi : _ , items } ) => {
374
+ walk_list ! ( visitor, visit_foreign_item, items) ;
369
375
}
370
376
ItemKind :: GlobalAsm ( asm) => try_visit ! ( visitor. visit_inline_asm( asm) ) ,
371
- ItemKind :: TyAlias ( box TyAlias { generics, bounds, ty, .. } ) => {
377
+ ItemKind :: TyAlias ( box TyAlias {
378
+ generics,
379
+ bounds,
380
+ ty,
381
+ defaultness : _,
382
+ where_clauses : _,
383
+ } ) => {
372
384
try_visit ! ( visitor. visit_generics( generics) ) ;
373
385
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: Bound ) ;
374
386
visit_opt ! ( visitor, visit_ty, ty) ;
@@ -407,7 +419,7 @@ impl WalkItemKind for ItemKind {
407
419
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: Bound ) ;
408
420
}
409
421
ItemKind :: MacCall ( mac) => try_visit ! ( visitor. visit_mac_call( mac) ) ,
410
- ItemKind :: MacroDef ( ts) => try_visit ! ( visitor. visit_mac_def( ts, item . id) ) ,
422
+ ItemKind :: MacroDef ( ts) => try_visit ! ( visitor. visit_mac_def( ts, * id) ) ,
411
423
ItemKind :: Delegation ( box Delegation {
412
424
id,
413
425
qself,
@@ -416,18 +428,14 @@ impl WalkItemKind for ItemKind {
416
428
body,
417
429
from_glob : _,
418
430
} ) => {
419
- if let Some ( qself) = qself {
420
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
421
- }
431
+ try_visit ! ( walk_qself( visitor, qself) ) ;
422
432
try_visit ! ( visitor. visit_path( path, * id) ) ;
423
433
visit_opt ! ( visitor, visit_ident, * rename) ;
424
434
visit_opt ! ( visitor, visit_block, body) ;
425
435
}
426
436
ItemKind :: DelegationMac ( box DelegationMac { qself, prefix, suffixes, body } ) => {
427
- if let Some ( qself) = qself {
428
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
429
- }
430
- try_visit ! ( visitor. visit_path( prefix, item. id) ) ;
437
+ try_visit ! ( walk_qself( visitor, qself) ) ;
438
+ try_visit ! ( visitor. visit_path( prefix, * id) ) ;
431
439
if let Some ( suffixes) = suffixes {
432
440
for ( ident, rename) in suffixes {
433
441
visitor. visit_ident ( * ident) ;
@@ -452,58 +460,62 @@ pub fn walk_item<'a, V: Visitor<'a>>(
452
460
453
461
pub fn walk_enum_def < ' a , V : Visitor < ' a > > (
454
462
visitor : & mut V ,
455
- enum_definition : & ' a EnumDef ,
463
+ EnumDef { variants } : & ' a EnumDef ,
456
464
) -> V :: Result {
457
- walk_list ! ( visitor, visit_variant, & enum_definition . variants) ;
465
+ walk_list ! ( visitor, visit_variant, variants) ;
458
466
V :: Result :: output ( )
459
467
}
460
468
461
469
pub fn walk_variant < ' a , V : Visitor < ' a > > ( visitor : & mut V , variant : & ' a Variant ) -> V :: Result
462
470
where
463
471
V : Visitor < ' a > ,
464
472
{
465
- walk_list ! ( visitor, visit_attribute, & variant. attrs) ;
466
- try_visit ! ( visitor. visit_ident( variant. ident) ) ;
467
- try_visit ! ( visitor. visit_vis( & variant. vis) ) ;
468
- try_visit ! ( visitor. visit_variant_data( & variant. data) ) ;
469
- visit_opt ! ( visitor, visit_variant_discr, & variant. disr_expr) ;
473
+ let Variant { attrs, id : _, span : _, vis, ident, data, disr_expr, is_placeholder : _ } = variant;
474
+ walk_list ! ( visitor, visit_attribute, attrs) ;
475
+ try_visit ! ( visitor. visit_vis( vis) ) ;
476
+ try_visit ! ( visitor. visit_ident( * ident) ) ;
477
+ try_visit ! ( visitor. visit_variant_data( data) ) ;
478
+ visit_opt ! ( visitor, visit_variant_discr, disr_expr) ;
470
479
V :: Result :: output ( )
471
480
}
472
481
473
482
pub fn walk_expr_field < ' a , V : Visitor < ' a > > ( visitor : & mut V , f : & ' a ExprField ) -> V :: Result {
474
- walk_list ! ( visitor, visit_attribute, & f. attrs) ;
475
- try_visit ! ( visitor. visit_expr( & f. expr) ) ;
476
- try_visit ! ( visitor. visit_ident( f. ident) ) ;
483
+ let ExprField { attrs, id : _, span : _, ident, expr, is_shorthand : _, is_placeholder : _ } = f;
484
+ walk_list ! ( visitor, visit_attribute, attrs) ;
485
+ try_visit ! ( visitor. visit_ident( * ident) ) ;
486
+ try_visit ! ( visitor. visit_expr( expr) ) ;
477
487
V :: Result :: output ( )
478
488
}
479
489
480
490
pub fn walk_pat_field < ' a , V : Visitor < ' a > > ( visitor : & mut V , fp : & ' a PatField ) -> V :: Result {
481
- walk_list ! ( visitor, visit_attribute, & fp. attrs) ;
482
- try_visit ! ( visitor. visit_ident( fp. ident) ) ;
483
- try_visit ! ( visitor. visit_pat( & fp. pat) ) ;
491
+ let PatField { ident, pat, is_shorthand : _, attrs, id : _, span : _, is_placeholder : _ } = fp;
492
+ walk_list ! ( visitor, visit_attribute, attrs) ;
493
+ try_visit ! ( visitor. visit_ident( * ident) ) ;
494
+ try_visit ! ( visitor. visit_pat( pat) ) ;
484
495
V :: Result :: output ( )
485
496
}
486
497
487
498
pub fn walk_ty < ' a , V : Visitor < ' a > > ( visitor : & mut V , typ : & ' a Ty ) -> V :: Result {
488
- match & typ. kind {
499
+ let Ty { id, kind, span : _, tokens : _ } = typ;
500
+ match kind {
489
501
TyKind :: Slice ( ty) | TyKind :: Paren ( ty) => try_visit ! ( visitor. visit_ty( ty) ) ,
490
- TyKind :: Ptr ( mutable_type ) => try_visit ! ( visitor. visit_ty( & mutable_type . ty) ) ,
491
- TyKind :: Ref ( opt_lifetime, mutable_type ) => {
502
+ TyKind :: Ptr ( MutTy { ty , mutbl : _ } ) => try_visit ! ( visitor. visit_ty( ty) ) ,
503
+ TyKind :: Ref ( opt_lifetime, MutTy { ty , mutbl : _ } ) => {
492
504
visit_opt ! ( visitor, visit_lifetime, opt_lifetime, LifetimeCtxt :: Ref ) ;
493
- try_visit ! ( visitor. visit_ty( & mutable_type . ty) ) ;
505
+ try_visit ! ( visitor. visit_ty( ty) ) ;
494
506
}
495
507
TyKind :: Tup ( tuple_element_types) => {
496
508
walk_list ! ( visitor, visit_ty, tuple_element_types) ;
497
509
}
498
510
TyKind :: BareFn ( function_declaration) => {
499
- walk_list ! ( visitor, visit_generic_param, & function_declaration. generic_params) ;
500
- try_visit ! ( walk_fn_decl( visitor, & function_declaration. decl) ) ;
511
+ let BareFnTy { safety : _, ext : _, generic_params, decl, decl_span : _ } =
512
+ & * * function_declaration;
513
+ walk_list ! ( visitor, visit_generic_param, generic_params) ;
514
+ try_visit ! ( walk_fn_decl( visitor, decl) ) ;
501
515
}
502
516
TyKind :: Path ( maybe_qself, path) => {
503
- if let Some ( qself) = maybe_qself {
504
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
505
- }
506
- try_visit ! ( visitor. visit_path( path, typ. id) ) ;
517
+ try_visit ! ( walk_qself( visitor, maybe_qself) ) ;
518
+ try_visit ! ( visitor. visit_path( path, * id) ) ;
507
519
}
508
520
TyKind :: Pat ( ty, pat) => {
509
521
try_visit ! ( visitor. visit_ty( ty) ) ;
@@ -513,25 +525,35 @@ pub fn walk_ty<'a, V: Visitor<'a>>(visitor: &mut V, typ: &'a Ty) -> V::Result {
513
525
try_visit ! ( visitor. visit_ty( ty) ) ;
514
526
try_visit ! ( visitor. visit_anon_const( length) ) ;
515
527
}
516
- TyKind :: TraitObject ( bounds, .. ) => {
528
+ TyKind :: TraitObject ( bounds, _syntax ) => {
517
529
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: TraitObject ) ;
518
530
}
519
- TyKind :: ImplTrait ( _ , bounds) => {
531
+ TyKind :: ImplTrait ( _id , bounds) => {
520
532
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: Impl ) ;
521
533
}
522
534
TyKind :: Typeof ( expression) => try_visit ! ( visitor. visit_anon_const( expression) ) ,
523
- TyKind :: Infer | TyKind :: ImplicitSelf | TyKind :: Dummy | TyKind :: Err ( _) => { }
535
+ TyKind :: Infer | TyKind :: ImplicitSelf | TyKind :: Dummy => { }
536
+ TyKind :: Err ( _guar) => { }
524
537
TyKind :: MacCall ( mac) => try_visit ! ( visitor. visit_mac_call( mac) ) ,
525
538
TyKind :: Never | TyKind :: CVarArgs => { }
526
- TyKind :: AnonStruct ( _ , ref fields) | TyKind :: AnonUnion ( _ , ref fields) => {
539
+ TyKind :: AnonStruct ( _id , ref fields) | TyKind :: AnonUnion ( _id , ref fields) => {
527
540
walk_list ! ( visitor, visit_field_def, fields) ;
528
541
}
529
542
}
530
543
V :: Result :: output ( )
531
544
}
532
545
546
+ fn walk_qself < ' a , V : Visitor < ' a > > ( visitor : & mut V , qself : & ' a Option < P < QSelf > > ) -> V :: Result {
547
+ if let Some ( qself) = qself {
548
+ let QSelf { ty, path_span : _, position : _ } = & * * qself;
549
+ try_visit ! ( visitor. visit_ty( ty) ) ;
550
+ }
551
+ V :: Result :: output ( )
552
+ }
553
+
533
554
pub fn walk_path < ' a , V : Visitor < ' a > > ( visitor : & mut V , path : & ' a Path ) -> V :: Result {
534
- walk_list ! ( visitor, visit_path_segment, & path. segments) ;
555
+ let Path { span : _, segments, tokens : _ } = path;
556
+ walk_list ! ( visitor, visit_path_segment, segments) ;
535
557
V :: Result :: output ( )
536
558
}
537
559
@@ -540,14 +562,15 @@ pub fn walk_use_tree<'a, V: Visitor<'a>>(
540
562
use_tree : & ' a UseTree ,
541
563
id : NodeId ,
542
564
) -> V :: Result {
543
- try_visit ! ( visitor. visit_path( & use_tree. prefix, id) ) ;
544
- match use_tree. kind {
565
+ let UseTree { prefix, kind, span : _ } = use_tree;
566
+ try_visit ! ( visitor. visit_path( prefix, id) ) ;
567
+ match kind {
545
568
UseTreeKind :: Simple ( rename) => {
546
569
// The extra IDs are handled during AST lowering.
547
- visit_opt ! ( visitor, visit_ident, rename) ;
570
+ visit_opt ! ( visitor, visit_ident, * rename) ;
548
571
}
549
572
UseTreeKind :: Glob => { }
550
- UseTreeKind :: Nested { ref items, .. } => {
573
+ UseTreeKind :: Nested { ref items, span : _ } => {
551
574
for & ( ref nested_tree, nested_id) in items {
552
575
try_visit ! ( visitor. visit_use_tree( nested_tree, nested_id, true ) ) ;
553
576
}
@@ -560,8 +583,9 @@ pub fn walk_path_segment<'a, V: Visitor<'a>>(
560
583
visitor : & mut V ,
561
584
segment : & ' a PathSegment ,
562
585
) -> V :: Result {
563
- try_visit ! ( visitor. visit_ident( segment. ident) ) ;
564
- visit_opt ! ( visitor, visit_generic_args, & segment. args) ;
586
+ let PathSegment { ident, id : _, args } = segment;
587
+ try_visit ! ( visitor. visit_ident( * ident) ) ;
588
+ visit_opt ! ( visitor, visit_generic_args, args) ;
565
589
V :: Result :: output ( )
566
590
}
567
591
@@ -570,8 +594,8 @@ where
570
594
V : Visitor < ' a > ,
571
595
{
572
596
match generic_args {
573
- GenericArgs :: AngleBracketed ( data ) => {
574
- for arg in & data . args {
597
+ GenericArgs :: AngleBracketed ( AngleBracketedArgs { span : _ , args } ) => {
598
+ for arg in args {
575
599
match arg {
576
600
AngleBracketedArg :: Arg ( a) => try_visit ! ( visitor. visit_generic_arg( a) ) ,
577
601
AngleBracketedArg :: Constraint ( c) => {
@@ -581,8 +605,9 @@ where
581
605
}
582
606
}
583
607
GenericArgs :: Parenthesized ( data) => {
584
- walk_list ! ( visitor, visit_ty, & data. inputs) ;
585
- try_visit ! ( visitor. visit_fn_ret_ty( & data. output) ) ;
608
+ let ParenthesizedArgs { span : _, inputs, inputs_span : _, output } = data;
609
+ walk_list ! ( visitor, visit_ty, inputs) ;
610
+ try_visit ! ( visitor. visit_fn_ret_ty( output) ) ;
586
611
}
587
612
}
588
613
V :: Result :: output ( )
@@ -603,9 +628,10 @@ pub fn walk_assoc_item_constraint<'a, V: Visitor<'a>>(
603
628
visitor : & mut V ,
604
629
constraint : & ' a AssocItemConstraint ,
605
630
) -> V :: Result {
606
- try_visit ! ( visitor. visit_ident( constraint. ident) ) ;
607
- visit_opt ! ( visitor, visit_generic_args, & constraint. gen_args) ;
608
- match & constraint. kind {
631
+ let AssocItemConstraint { id : _, ident, gen_args, kind, span : _ } = constraint;
632
+ try_visit ! ( visitor. visit_ident( * ident) ) ;
633
+ visit_opt ! ( visitor, visit_generic_args, gen_args) ;
634
+ match kind {
609
635
AssocItemConstraintKind :: Equality { term } => match term {
610
636
Term :: Ty ( ty) => try_visit ! ( visitor. visit_ty( ty) ) ,
611
637
Term :: Const ( c) => try_visit ! ( visitor. visit_anon_const( c) ) ,
@@ -618,43 +644,39 @@ pub fn walk_assoc_item_constraint<'a, V: Visitor<'a>>(
618
644
}
619
645
620
646
pub fn walk_pat < ' a , V : Visitor < ' a > > ( visitor : & mut V , pattern : & ' a Pat ) -> V :: Result {
621
- match & pattern. kind {
647
+ let Pat { id, kind, span : _, tokens : _ } = pattern;
648
+ match kind {
622
649
PatKind :: TupleStruct ( opt_qself, path, elems) => {
623
- if let Some ( qself) = opt_qself {
624
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
625
- }
626
- try_visit ! ( visitor. visit_path( path, pattern. id) ) ;
650
+ try_visit ! ( walk_qself( visitor, opt_qself) ) ;
651
+ try_visit ! ( visitor. visit_path( path, * id) ) ;
627
652
walk_list ! ( visitor, visit_pat, elems) ;
628
653
}
629
654
PatKind :: Path ( opt_qself, path) => {
630
- if let Some ( qself) = opt_qself {
631
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
632
- }
633
- try_visit ! ( visitor. visit_path( path, pattern. id) )
655
+ try_visit ! ( walk_qself( visitor, opt_qself) ) ;
656
+ try_visit ! ( visitor. visit_path( path, * id) )
634
657
}
635
- PatKind :: Struct ( opt_qself, path, fields, _) => {
636
- if let Some ( qself) = opt_qself {
637
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
638
- }
639
- try_visit ! ( visitor. visit_path( path, pattern. id) ) ;
658
+ PatKind :: Struct ( opt_qself, path, fields, _rest) => {
659
+ try_visit ! ( walk_qself( visitor, opt_qself) ) ;
660
+ try_visit ! ( visitor. visit_path( path, * id) ) ;
640
661
walk_list ! ( visitor, visit_pat_field, fields) ;
641
662
}
642
- PatKind :: Box ( subpattern)
643
- | PatKind :: Deref ( subpattern)
644
- | PatKind :: Ref ( subpattern , _ )
645
- | PatKind :: Paren ( subpattern) => {
663
+ PatKind :: Box ( subpattern) | PatKind :: Deref ( subpattern ) | PatKind :: Paren ( subpattern ) => {
664
+ try_visit ! ( visitor . visit_pat ( subpattern) ) ;
665
+ }
666
+ PatKind :: Ref ( subpattern, _ /*mutbl*/ ) => {
646
667
try_visit ! ( visitor. visit_pat( subpattern) ) ;
647
668
}
648
- PatKind :: Ident ( _ , ident, optional_subpattern) => {
669
+ PatKind :: Ident ( _bmode , ident, optional_subpattern) => {
649
670
try_visit ! ( visitor. visit_ident( * ident) ) ;
650
671
visit_opt ! ( visitor, visit_pat, optional_subpattern) ;
651
672
}
652
673
PatKind :: Lit ( expression) => try_visit ! ( visitor. visit_expr( expression) ) ,
653
- PatKind :: Range ( lower_bound, upper_bound, _ ) => {
674
+ PatKind :: Range ( lower_bound, upper_bound, _end ) => {
654
675
visit_opt ! ( visitor, visit_expr, lower_bound) ;
655
676
visit_opt ! ( visitor, visit_expr, upper_bound) ;
656
677
}
657
- PatKind :: Wild | PatKind :: Rest | PatKind :: Never | PatKind :: Err ( _) => { }
678
+ PatKind :: Wild | PatKind :: Rest | PatKind :: Never => { }
679
+ PatKind :: Err ( _guar) => { }
658
680
PatKind :: Tuple ( elems) | PatKind :: Slice ( elems) | PatKind :: Or ( elems) => {
659
681
walk_list ! ( visitor, visit_pat, elems) ;
660
682
}
@@ -680,7 +702,13 @@ impl WalkItemKind for ForeignItemKind {
680
702
let kind = FnKind :: Fn ( FnCtxt :: Foreign , ident, sig, vis, generics, body. as_deref ( ) ) ;
681
703
try_visit ! ( visitor. visit_fn( kind, span, id) ) ;
682
704
}
683
- ForeignItemKind :: TyAlias ( box TyAlias { generics, bounds, ty, .. } ) => {
705
+ ForeignItemKind :: TyAlias ( box TyAlias {
706
+ generics,
707
+ bounds,
708
+ ty,
709
+ defaultness : _,
710
+ where_clauses : _,
711
+ } ) => {
684
712
try_visit ! ( visitor. visit_generics( generics) ) ;
685
713
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: Bound ) ;
686
714
visit_opt ! ( visitor, visit_ty, ty) ;
@@ -697,7 +725,7 @@ pub fn walk_param_bound<'a, V: Visitor<'a>>(visitor: &mut V, bound: &'a GenericB
697
725
match bound {
698
726
GenericBound :: Trait ( typ, _modifier) => visitor. visit_poly_trait_ref ( typ) ,
699
727
GenericBound :: Outlives ( lifetime) => visitor. visit_lifetime ( lifetime, LifetimeCtxt :: Bound ) ,
700
- GenericBound :: Use ( args, _ ) => {
728
+ GenericBound :: Use ( args, _span ) => {
701
729
walk_list ! ( visitor, visit_precise_capturing_arg, args) ;
702
730
V :: Result :: output ( )
703
731
}
@@ -722,13 +750,15 @@ pub fn walk_generic_param<'a, V: Visitor<'a>>(
722
750
visitor : & mut V ,
723
751
param : & ' a GenericParam ,
724
752
) -> V :: Result {
725
- walk_list ! ( visitor, visit_attribute, & param. attrs) ;
726
- try_visit ! ( visitor. visit_ident( param. ident) ) ;
727
- walk_list ! ( visitor, visit_param_bound, & param. bounds, BoundKind :: Bound ) ;
728
- match & param. kind {
753
+ let GenericParam { id : _, ident, attrs, bounds, is_placeholder : _, kind, colon_span : _ } =
754
+ param;
755
+ walk_list ! ( visitor, visit_attribute, attrs) ;
756
+ try_visit ! ( visitor. visit_ident( * ident) ) ;
757
+ walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: Bound ) ;
758
+ match kind {
729
759
GenericParamKind :: Lifetime => ( ) ,
730
760
GenericParamKind :: Type { default } => visit_opt ! ( visitor, visit_ty, default ) ,
731
- GenericParamKind :: Const { ty, default, .. } => {
761
+ GenericParamKind :: Const { ty, default, kw_span : _ } => {
732
762
try_visit ! ( visitor. visit_ty( ty) ) ;
733
763
visit_opt ! ( visitor, visit_anon_const, default ) ;
734
764
}
@@ -737,8 +767,10 @@ pub fn walk_generic_param<'a, V: Visitor<'a>>(
737
767
}
738
768
739
769
pub fn walk_generics < ' a , V : Visitor < ' a > > ( visitor : & mut V , generics : & ' a Generics ) -> V :: Result {
740
- walk_list ! ( visitor, visit_generic_param, & generics. params) ;
741
- walk_list ! ( visitor, visit_where_predicate, & generics. where_clause. predicates) ;
770
+ let Generics { params, where_clause, span : _ } = generics;
771
+ let WhereClause { has_where_token : _, predicates, span : _ } = where_clause;
772
+ walk_list ! ( visitor, visit_generic_param, params) ;
773
+ walk_list ! ( visitor, visit_where_predicate, predicates) ;
742
774
V :: Result :: output ( )
743
775
}
744
776
@@ -764,17 +796,17 @@ pub fn walk_where_predicate<'a, V: Visitor<'a>>(
764
796
bounded_ty,
765
797
bounds,
766
798
bound_generic_params,
767
- ..
799
+ span : _ ,
768
800
} ) => {
801
+ walk_list ! ( visitor, visit_generic_param, bound_generic_params) ;
769
802
try_visit ! ( visitor. visit_ty( bounded_ty) ) ;
770
803
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: Bound ) ;
771
- walk_list ! ( visitor, visit_generic_param, bound_generic_params) ;
772
804
}
773
- WherePredicate :: RegionPredicate ( WhereRegionPredicate { lifetime, bounds, .. } ) => {
805
+ WherePredicate :: RegionPredicate ( WhereRegionPredicate { lifetime, bounds, span : _ } ) => {
774
806
try_visit ! ( visitor. visit_lifetime( lifetime, LifetimeCtxt :: Bound ) ) ;
775
807
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: Bound ) ;
776
808
}
777
- WherePredicate :: EqPredicate ( WhereEqPredicate { lhs_ty, rhs_ty, .. } ) => {
809
+ WherePredicate :: EqPredicate ( WhereEqPredicate { lhs_ty, rhs_ty, span : _ } ) => {
778
810
try_visit ! ( visitor. visit_ty( lhs_ty) ) ;
779
811
try_visit ! ( visitor. visit_ty( rhs_ty) ) ;
780
812
}
@@ -783,26 +815,28 @@ pub fn walk_where_predicate<'a, V: Visitor<'a>>(
783
815
}
784
816
785
817
pub fn walk_fn_ret_ty < ' a , V : Visitor < ' a > > ( visitor : & mut V , ret_ty : & ' a FnRetTy ) -> V :: Result {
786
- if let FnRetTy :: Ty ( output_ty) = ret_ty {
787
- try_visit ! ( visitor. visit_ty( output_ty) ) ;
818
+ match ret_ty {
819
+ FnRetTy :: Default ( _span) => { }
820
+ FnRetTy :: Ty ( output_ty) => try_visit ! ( visitor. visit_ty( output_ty) ) ,
788
821
}
789
822
V :: Result :: output ( )
790
823
}
791
824
792
825
pub fn walk_fn_decl < ' a , V : Visitor < ' a > > (
793
826
visitor : & mut V ,
794
- function_declaration : & ' a FnDecl ,
827
+ FnDecl { inputs , output } : & ' a FnDecl ,
795
828
) -> V :: Result {
796
- walk_list ! ( visitor, visit_param, & function_declaration . inputs) ;
797
- visitor. visit_fn_ret_ty ( & function_declaration . output )
829
+ walk_list ! ( visitor, visit_param, inputs) ;
830
+ visitor. visit_fn_ret_ty ( output)
798
831
}
799
832
800
833
pub fn walk_fn < ' a , V : Visitor < ' a > > ( visitor : & mut V , kind : FnKind < ' a > ) -> V :: Result {
801
834
match kind {
802
- FnKind :: Fn ( _, _, sig, _, generics, body) => {
835
+ FnKind :: Fn ( _ctxt, _ident, FnSig { header, decl, span : _ } , _vis, generics, body) => {
836
+ // Identifier and visibility are visited as a part of the item.
837
+ try_visit ! ( visitor. visit_fn_header( header) ) ;
803
838
try_visit ! ( visitor. visit_generics( generics) ) ;
804
- try_visit ! ( visitor. visit_fn_header( & sig. header) ) ;
805
- try_visit ! ( walk_fn_decl( visitor, & sig. decl) ) ;
839
+ try_visit ! ( walk_fn_decl( visitor, decl) ) ;
806
840
visit_opt ! ( visitor, visit_block, body) ;
807
841
}
808
842
FnKind :: Closure ( binder, decl, body) => {
@@ -833,7 +867,13 @@ impl WalkItemKind for AssocItemKind {
833
867
FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , ident, sig, vis, generics, body. as_deref ( ) ) ;
834
868
try_visit ! ( visitor. visit_fn( kind, span, id) ) ;
835
869
}
836
- AssocItemKind :: Type ( box TyAlias { generics, bounds, ty, .. } ) => {
870
+ AssocItemKind :: Type ( box TyAlias {
871
+ generics,
872
+ bounds,
873
+ ty,
874
+ defaultness : _,
875
+ where_clauses : _,
876
+ } ) => {
837
877
try_visit ! ( visitor. visit_generics( generics) ) ;
838
878
walk_list ! ( visitor, visit_param_bound, bounds, BoundKind :: Bound ) ;
839
879
visit_opt ! ( visitor, visit_ty, ty) ;
@@ -849,18 +889,14 @@ impl WalkItemKind for AssocItemKind {
849
889
body,
850
890
from_glob : _,
851
891
} ) => {
852
- if let Some ( qself) = qself {
853
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
854
- }
892
+ try_visit ! ( walk_qself( visitor, qself) ) ;
855
893
try_visit ! ( visitor. visit_path( path, * id) ) ;
856
894
visit_opt ! ( visitor, visit_ident, * rename) ;
857
895
visit_opt ! ( visitor, visit_block, body) ;
858
896
}
859
897
AssocItemKind :: DelegationMac ( box DelegationMac { qself, prefix, suffixes, body } ) => {
860
- if let Some ( qself) = qself {
861
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
862
- }
863
- try_visit ! ( visitor. visit_path( prefix, item. id) ) ;
898
+ try_visit ! ( walk_qself( visitor, qself) ) ;
899
+ try_visit ! ( visitor. visit_path( prefix, id) ) ;
864
900
if let Some ( suffixes) = suffixes {
865
901
for ( ident, rename) in suffixes {
866
902
visitor. visit_ident ( * ident) ;
@@ -898,20 +934,23 @@ pub fn walk_struct_def<'a, V: Visitor<'a>>(
898
934
}
899
935
900
936
pub fn walk_field_def < ' a , V : Visitor < ' a > > ( visitor : & mut V , field : & ' a FieldDef ) -> V :: Result {
901
- walk_list ! ( visitor, visit_attribute, & field. attrs) ;
902
- try_visit ! ( visitor. visit_vis( & field. vis) ) ;
903
- visit_opt ! ( visitor, visit_ident, field. ident) ;
904
- try_visit ! ( visitor. visit_ty( & field. ty) ) ;
937
+ let FieldDef { attrs, id : _, span : _, vis, ident, ty, is_placeholder : _ } = field;
938
+ walk_list ! ( visitor, visit_attribute, attrs) ;
939
+ try_visit ! ( visitor. visit_vis( vis) ) ;
940
+ visit_opt ! ( visitor, visit_ident, * ident) ;
941
+ try_visit ! ( visitor. visit_ty( ty) ) ;
905
942
V :: Result :: output ( )
906
943
}
907
944
908
945
pub fn walk_block < ' a , V : Visitor < ' a > > ( visitor : & mut V , block : & ' a Block ) -> V :: Result {
909
- walk_list ! ( visitor, visit_stmt, & block. stmts) ;
946
+ let Block { stmts, id : _, rules : _, span : _, tokens : _, could_be_bare_literal : _ } = block;
947
+ walk_list ! ( visitor, visit_stmt, stmts) ;
910
948
V :: Result :: output ( )
911
949
}
912
950
913
951
pub fn walk_stmt < ' a , V : Visitor < ' a > > ( visitor : & mut V , statement : & ' a Stmt ) -> V :: Result {
914
- match & statement. kind {
952
+ let Stmt { id : _, kind, span : _ } = statement;
953
+ match kind {
915
954
StmtKind :: Let ( local) => try_visit ! ( visitor. visit_local( local) ) ,
916
955
StmtKind :: Item ( item) => try_visit ! ( visitor. visit_item( item) ) ,
917
956
StmtKind :: Expr ( expr) | StmtKind :: Semi ( expr) => try_visit ! ( visitor. visit_expr( expr) ) ,
@@ -926,25 +965,37 @@ pub fn walk_stmt<'a, V: Visitor<'a>>(visitor: &mut V, statement: &'a Stmt) -> V:
926
965
}
927
966
928
967
pub fn walk_mac < ' a , V : Visitor < ' a > > ( visitor : & mut V , mac : & ' a MacCall ) -> V :: Result {
929
- visitor. visit_path ( & mac. path , DUMMY_NODE_ID )
968
+ let MacCall { path, args : _ } = mac;
969
+ visitor. visit_path ( path, DUMMY_NODE_ID )
930
970
}
931
971
932
972
pub fn walk_anon_const < ' a , V : Visitor < ' a > > ( visitor : & mut V , constant : & ' a AnonConst ) -> V :: Result {
933
- visitor. visit_expr ( & constant. value )
973
+ let AnonConst { id : _, value } = constant;
974
+ visitor. visit_expr ( value)
934
975
}
935
976
936
977
pub fn walk_inline_asm < ' a , V : Visitor < ' a > > ( visitor : & mut V , asm : & ' a InlineAsm ) -> V :: Result {
937
- for ( op, _) in & asm. operands {
978
+ let InlineAsm {
979
+ template : _,
980
+ template_strs : _,
981
+ operands,
982
+ clobber_abis : _,
983
+ options : _,
984
+ line_spans : _,
985
+ } = asm;
986
+ for ( op, _span) in operands {
938
987
match op {
939
- InlineAsmOperand :: In { expr, .. }
940
- | InlineAsmOperand :: Out { expr : Some ( expr) , .. }
941
- | InlineAsmOperand :: InOut { expr, .. } => try_visit ! ( visitor. visit_expr( expr) ) ,
942
- InlineAsmOperand :: Out { expr : None , .. } => { }
943
- InlineAsmOperand :: SplitInOut { in_expr, out_expr, .. } => {
988
+ InlineAsmOperand :: In { expr, reg : _ }
989
+ | InlineAsmOperand :: Out { expr : Some ( expr) , reg : _, late : _ }
990
+ | InlineAsmOperand :: InOut { expr, reg : _, late : _ } => {
991
+ try_visit ! ( visitor. visit_expr( expr) )
992
+ }
993
+ InlineAsmOperand :: Out { expr : None , reg : _, late : _ } => { }
994
+ InlineAsmOperand :: SplitInOut { in_expr, out_expr, reg : _, late : _ } => {
944
995
try_visit ! ( visitor. visit_expr( in_expr) ) ;
945
996
visit_opt ! ( visitor, visit_expr, out_expr) ;
946
997
}
947
- InlineAsmOperand :: Const { anon_const, .. } => {
998
+ InlineAsmOperand :: Const { anon_const } => {
948
999
try_visit ! ( visitor. visit_anon_const( anon_const) )
949
1000
}
950
1001
InlineAsmOperand :: Sym { sym } => try_visit ! ( visitor. visit_inline_asm_sym( sym) ) ,
@@ -956,28 +1007,30 @@ pub fn walk_inline_asm<'a, V: Visitor<'a>>(visitor: &mut V, asm: &'a InlineAsm)
956
1007
957
1008
pub fn walk_inline_asm_sym < ' a , V : Visitor < ' a > > (
958
1009
visitor : & mut V ,
959
- sym : & ' a InlineAsmSym ,
1010
+ InlineAsmSym { id , qself , path } : & ' a InlineAsmSym ,
960
1011
) -> V :: Result {
961
- if let Some ( qself) = & sym. qself {
962
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
963
- }
964
- visitor. visit_path ( & sym. path , sym. id )
1012
+ try_visit ! ( walk_qself( visitor, qself) ) ;
1013
+ visitor. visit_path ( path, * id)
965
1014
}
966
1015
967
1016
pub fn walk_format_args < ' a , V : Visitor < ' a > > ( visitor : & mut V , fmt : & ' a FormatArgs ) -> V :: Result {
968
- for arg in fmt. arguments . all_args ( ) {
969
- if let FormatArgumentKind :: Named ( name) = arg. kind {
970
- try_visit ! ( visitor. visit_ident( name) ) ;
1017
+ let FormatArgs { span : _, template : _, arguments } = fmt;
1018
+ for FormatArgument { kind, expr } in arguments. all_args ( ) {
1019
+ match kind {
1020
+ FormatArgumentKind :: Named ( ident) | FormatArgumentKind :: Captured ( ident) => {
1021
+ try_visit ! ( visitor. visit_ident( * ident) )
1022
+ }
1023
+ FormatArgumentKind :: Normal => { }
971
1024
}
972
- try_visit ! ( visitor. visit_expr( & arg . expr) ) ;
1025
+ try_visit ! ( visitor. visit_expr( expr) ) ;
973
1026
}
974
1027
V :: Result :: output ( )
975
1028
}
976
1029
977
1030
pub fn walk_expr < ' a , V : Visitor < ' a > > ( visitor : & mut V , expression : & ' a Expr ) -> V :: Result {
978
- walk_list ! ( visitor , visit_attribute , & expression . attrs) ;
979
-
980
- match & expression . kind {
1031
+ let Expr { id , kind , span , attrs, tokens : _ } = expression ;
1032
+ walk_list ! ( visitor , visit_attribute , attrs ) ;
1033
+ match kind {
981
1034
ExprKind :: Array ( subexpressions) => {
982
1035
walk_list ! ( visitor, visit_expr, subexpressions) ;
983
1036
}
@@ -987,12 +1040,11 @@ pub fn walk_expr<'a, V: Visitor<'a>>(visitor: &mut V, expression: &'a Expr) -> V
987
1040
try_visit ! ( visitor. visit_anon_const( count) ) ;
988
1041
}
989
1042
ExprKind :: Struct ( se) => {
990
- if let Some ( qself) = & se. qself {
991
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
992
- }
993
- try_visit ! ( visitor. visit_path( & se. path, expression. id) ) ;
994
- walk_list ! ( visitor, visit_expr_field, & se. fields) ;
995
- match & se. rest {
1043
+ let StructExpr { qself, path, fields, rest } = & * * se;
1044
+ try_visit ! ( walk_qself( visitor, qself) ) ;
1045
+ try_visit ! ( visitor. visit_path( path, * id) ) ;
1046
+ walk_list ! ( visitor, visit_expr_field, fields) ;
1047
+ match rest {
996
1048
StructRest :: Base ( expr) => try_visit ! ( visitor. visit_expr( expr) ) ,
997
1049
StructRest :: Rest ( _span) => { }
998
1050
StructRest :: None => { }
@@ -1006,22 +1058,25 @@ pub fn walk_expr<'a, V: Visitor<'a>>(visitor: &mut V, expression: &'a Expr) -> V
1006
1058
walk_list ! ( visitor, visit_expr, arguments) ;
1007
1059
}
1008
1060
ExprKind :: MethodCall ( box MethodCall { seg, receiver, args, span : _ } ) => {
1009
- try_visit ! ( visitor. visit_path_segment( seg) ) ;
1010
1061
try_visit ! ( visitor. visit_expr( receiver) ) ;
1062
+ try_visit ! ( visitor. visit_path_segment( seg) ) ;
1011
1063
walk_list ! ( visitor, visit_expr, args) ;
1012
1064
}
1013
- ExprKind :: Binary ( _ , left_expression, right_expression) => {
1065
+ ExprKind :: Binary ( _op , left_expression, right_expression) => {
1014
1066
try_visit ! ( visitor. visit_expr( left_expression) ) ;
1015
1067
try_visit ! ( visitor. visit_expr( right_expression) ) ;
1016
1068
}
1017
- ExprKind :: AddrOf ( _, _, subexpression) | ExprKind :: Unary ( _, subexpression) => {
1069
+ ExprKind :: AddrOf ( _kind, _mutbl, subexpression) => {
1070
+ try_visit ! ( visitor. visit_expr( subexpression) ) ;
1071
+ }
1072
+ ExprKind :: Unary ( _op, subexpression) => {
1018
1073
try_visit ! ( visitor. visit_expr( subexpression) ) ;
1019
1074
}
1020
1075
ExprKind :: Cast ( subexpression, typ) | ExprKind :: Type ( subexpression, typ) => {
1021
1076
try_visit ! ( visitor. visit_expr( subexpression) ) ;
1022
1077
try_visit ! ( visitor. visit_ty( typ) ) ;
1023
1078
}
1024
- ExprKind :: Let ( pat, expr, _ , _ ) => {
1079
+ ExprKind :: Let ( pat, expr, _span , _recovered ) => {
1025
1080
try_visit ! ( visitor. visit_pat( pat) ) ;
1026
1081
try_visit ! ( visitor. visit_expr( expr) ) ;
1027
1082
}
@@ -1041,7 +1096,7 @@ pub fn walk_expr<'a, V: Visitor<'a>>(visitor: &mut V, expression: &'a Expr) -> V
1041
1096
try_visit ! ( visitor. visit_expr( iter) ) ;
1042
1097
try_visit ! ( visitor. visit_block( body) ) ;
1043
1098
}
1044
- ExprKind :: Loop ( block, opt_label, _ ) => {
1099
+ ExprKind :: Loop ( block, opt_label, _span ) => {
1045
1100
visit_opt ! ( visitor, visit_label, opt_label) ;
1046
1101
try_visit ! ( visitor. visit_block( block) ) ;
1047
1102
}
@@ -1061,44 +1116,38 @@ pub fn walk_expr<'a, V: Visitor<'a>>(visitor: &mut V, expression: &'a Expr) -> V
1061
1116
fn_arg_span : _,
1062
1117
} ) => {
1063
1118
try_visit ! ( visitor. visit_capture_by( capture_clause) ) ;
1064
- try_visit ! ( visitor. visit_fn(
1065
- FnKind :: Closure ( binder, fn_decl, body) ,
1066
- expression. span,
1067
- expression. id
1068
- ) )
1119
+ try_visit ! ( visitor. visit_fn( FnKind :: Closure ( binder, fn_decl, body) , * span, * id) )
1069
1120
}
1070
1121
ExprKind :: Block ( block, opt_label) => {
1071
1122
visit_opt ! ( visitor, visit_label, opt_label) ;
1072
1123
try_visit ! ( visitor. visit_block( block) ) ;
1073
1124
}
1074
- ExprKind :: Gen ( _ , body, _ ) => try_visit ! ( visitor. visit_block( body) ) ,
1075
- ExprKind :: Await ( expr, _ ) => try_visit ! ( visitor. visit_expr( expr) ) ,
1076
- ExprKind :: Assign ( lhs, rhs, _ ) => {
1125
+ ExprKind :: Gen ( _capt , body, _kind ) => try_visit ! ( visitor. visit_block( body) ) ,
1126
+ ExprKind :: Await ( expr, _span ) => try_visit ! ( visitor. visit_expr( expr) ) ,
1127
+ ExprKind :: Assign ( lhs, rhs, _span ) => {
1077
1128
try_visit ! ( visitor. visit_expr( lhs) ) ;
1078
1129
try_visit ! ( visitor. visit_expr( rhs) ) ;
1079
1130
}
1080
- ExprKind :: AssignOp ( _ , left_expression, right_expression) => {
1131
+ ExprKind :: AssignOp ( _op , left_expression, right_expression) => {
1081
1132
try_visit ! ( visitor. visit_expr( left_expression) ) ;
1082
1133
try_visit ! ( visitor. visit_expr( right_expression) ) ;
1083
1134
}
1084
1135
ExprKind :: Field ( subexpression, ident) => {
1085
1136
try_visit ! ( visitor. visit_expr( subexpression) ) ;
1086
1137
try_visit ! ( visitor. visit_ident( * ident) ) ;
1087
1138
}
1088
- ExprKind :: Index ( main_expression, index_expression, _ ) => {
1139
+ ExprKind :: Index ( main_expression, index_expression, _span ) => {
1089
1140
try_visit ! ( visitor. visit_expr( main_expression) ) ;
1090
1141
try_visit ! ( visitor. visit_expr( index_expression) ) ;
1091
1142
}
1092
- ExprKind :: Range ( start, end, _ ) => {
1143
+ ExprKind :: Range ( start, end, _limit ) => {
1093
1144
visit_opt ! ( visitor, visit_expr, start) ;
1094
1145
visit_opt ! ( visitor, visit_expr, end) ;
1095
1146
}
1096
1147
ExprKind :: Underscore => { }
1097
1148
ExprKind :: Path ( maybe_qself, path) => {
1098
- if let Some ( qself) = maybe_qself {
1099
- try_visit ! ( visitor. visit_ty( & qself. ty) ) ;
1100
- }
1101
- try_visit ! ( visitor. visit_path( path, expression. id) ) ;
1149
+ try_visit ! ( walk_qself( visitor, maybe_qself) ) ;
1150
+ try_visit ! ( visitor. visit_path( path, * id) ) ;
1102
1151
}
1103
1152
ExprKind :: Break ( opt_label, opt_expr) => {
1104
1153
visit_opt ! ( visitor, visit_label, opt_label) ;
@@ -1127,48 +1176,63 @@ pub fn walk_expr<'a, V: Visitor<'a>>(visitor: &mut V, expression: &'a Expr) -> V
1127
1176
}
1128
1177
ExprKind :: Try ( subexpression) => try_visit ! ( visitor. visit_expr( subexpression) ) ,
1129
1178
ExprKind :: TryBlock ( body) => try_visit ! ( visitor. visit_block( body) ) ,
1130
- ExprKind :: Lit ( _) | ExprKind :: IncludedBytes ( ..) | ExprKind :: Err ( _) | ExprKind :: Dummy => { }
1179
+ ExprKind :: Lit ( _token) => { }
1180
+ ExprKind :: IncludedBytes ( _bytes) => { }
1181
+ ExprKind :: Err ( _guar) => { }
1182
+ ExprKind :: Dummy => { }
1131
1183
}
1132
1184
1133
1185
visitor. visit_expr_post ( expression)
1134
1186
}
1135
1187
1136
1188
pub fn walk_param < ' a , V : Visitor < ' a > > ( visitor : & mut V , param : & ' a Param ) -> V :: Result {
1137
- walk_list ! ( visitor, visit_attribute, & param. attrs) ;
1138
- try_visit ! ( visitor. visit_pat( & param. pat) ) ;
1139
- try_visit ! ( visitor. visit_ty( & param. ty) ) ;
1189
+ let Param { attrs, ty, pat, id : _, span : _, is_placeholder : _ } = param;
1190
+ walk_list ! ( visitor, visit_attribute, attrs) ;
1191
+ try_visit ! ( visitor. visit_pat( pat) ) ;
1192
+ try_visit ! ( visitor. visit_ty( ty) ) ;
1140
1193
V :: Result :: output ( )
1141
1194
}
1142
1195
1143
1196
pub fn walk_arm < ' a , V : Visitor < ' a > > ( visitor : & mut V , arm : & ' a Arm ) -> V :: Result {
1144
- walk_list ! ( visitor, visit_attribute, & arm. attrs) ;
1145
- try_visit ! ( visitor. visit_pat( & arm. pat) ) ;
1146
- visit_opt ! ( visitor, visit_expr, & arm. guard) ;
1147
- visit_opt ! ( visitor, visit_expr, & arm. body) ;
1197
+ let Arm { attrs, pat, guard, body, span : _, id : _, is_placeholder : _ } = arm;
1198
+ walk_list ! ( visitor, visit_attribute, attrs) ;
1199
+ try_visit ! ( visitor. visit_pat( pat) ) ;
1200
+ visit_opt ! ( visitor, visit_expr, guard) ;
1201
+ visit_opt ! ( visitor, visit_expr, body) ;
1148
1202
V :: Result :: output ( )
1149
1203
}
1150
1204
1151
1205
pub fn walk_vis < ' a , V : Visitor < ' a > > ( visitor : & mut V , vis : & ' a Visibility ) -> V :: Result {
1152
- if let VisibilityKind :: Restricted { ref path, id, shorthand : _ } = vis. kind {
1153
- try_visit ! ( visitor. visit_path( path, id) ) ;
1206
+ let Visibility { kind, span : _, tokens : _ } = vis;
1207
+ match kind {
1208
+ VisibilityKind :: Restricted { path, id, shorthand : _ } => {
1209
+ try_visit ! ( visitor. visit_path( path, * id) ) ;
1210
+ }
1211
+ VisibilityKind :: Public | VisibilityKind :: Inherited => { }
1154
1212
}
1155
1213
V :: Result :: output ( )
1156
1214
}
1157
1215
1158
1216
pub fn walk_attribute < ' a , V : Visitor < ' a > > ( visitor : & mut V , attr : & ' a Attribute ) -> V :: Result {
1159
- match & attr. kind {
1160
- AttrKind :: Normal ( normal) => try_visit ! ( walk_attr_args( visitor, & normal. item. args) ) ,
1161
- AttrKind :: DocComment ( ..) => { }
1217
+ let Attribute { kind, id : _, style : _, span : _ } = attr;
1218
+ match kind {
1219
+ AttrKind :: Normal ( normal) => {
1220
+ let NormalAttr { item, tokens : _ } = & * * normal;
1221
+ let AttrItem { unsafety : _, path, args, tokens : _ } = item;
1222
+ try_visit ! ( visitor. visit_path( path, DUMMY_NODE_ID ) ) ;
1223
+ try_visit ! ( walk_attr_args( visitor, args) ) ;
1224
+ }
1225
+ AttrKind :: DocComment ( _kind, _sym) => { }
1162
1226
}
1163
1227
V :: Result :: output ( )
1164
1228
}
1165
1229
1166
1230
pub fn walk_attr_args < ' a , V : Visitor < ' a > > ( visitor : & mut V , args : & ' a AttrArgs ) -> V :: Result {
1167
1231
match args {
1168
1232
AttrArgs :: Empty => { }
1169
- AttrArgs :: Delimited ( _ ) => { }
1233
+ AttrArgs :: Delimited ( _args ) => { }
1170
1234
AttrArgs :: Eq ( _eq_span, AttrArgsEq :: Ast ( expr) ) => try_visit ! ( visitor. visit_expr( expr) ) ,
1171
- AttrArgs :: Eq ( _ , AttrArgsEq :: Hir ( lit) ) => {
1235
+ AttrArgs :: Eq ( _eq_span , AttrArgsEq :: Hir ( lit) ) => {
1172
1236
unreachable ! ( "in literal form when walking mac args eq: {:?}" , lit)
1173
1237
}
1174
1238
}
0 commit comments