@@ -208,7 +208,7 @@ pub trait MutVisitor: Sized {
208
208
}
209
209
210
210
fn visit_ident(&mut self, i: &mut Ident) {
211
- walk_ident( self, i );
211
+ self.visit_span(&mut i.span );
212
212
}
213
213
214
214
fn visit_path(&mut self, p: &mut Path) {
@@ -364,13 +364,16 @@ pub trait MutVisitor: Sized {
364
364
super::common_visitor_and_walkers!((mut) MutVisitor);
365
365
366
366
macro_rules! generate_flat_map_visitor_fns {
367
- ($($name:ident, $Ty:ty, $flat_map_fn:ident;)+) => {
367
+ ($($name:ident, $Ty:ty, $flat_map_fn:ident$(, $param:ident: $ParamTy:ty)* ;)+) => {
368
368
$(
369
369
fn $name<V: MutVisitor>(
370
370
vis: &mut V,
371
371
values: &mut ThinVec<$Ty>,
372
+ $(
373
+ $param: $ParamTy,
374
+ )*
372
375
) {
373
- values.flat_map_in_place(|value| vis.$flat_map_fn(value));
376
+ values.flat_map_in_place(|value| vis.$flat_map_fn(value$(,$param)* ));
374
377
}
375
378
)+
376
379
}
@@ -383,6 +386,8 @@ generate_flat_map_visitor_fns! {
383
386
visit_stmts, Stmt, flat_map_stmt;
384
387
visit_exprs, P<Expr>, filter_map_expr;
385
388
visit_pat_fields, PatField, flat_map_pat_field;
389
+ visit_variants, Variant, flat_map_variant;
390
+ visit_assoc_items, P<AssocItem>, flat_map_assoc_item, ctxt: AssocCtxt;
386
391
}
387
392
388
393
#[inline]
@@ -439,15 +444,6 @@ fn visit_delim_args<T: MutVisitor>(vis: &mut T, args: &mut DelimArgs) {
439
444
vis.visit_span(close);
440
445
}
441
446
442
- pub fn walk_pat_field<T: MutVisitor>(vis: &mut T, fp: &mut PatField) {
443
- let PatField { attrs, id, ident, is_placeholder: _, is_shorthand: _, pat, span } = fp;
444
- vis.visit_id(id);
445
- visit_attrs(vis, attrs);
446
- vis.visit_ident(ident);
447
- vis.visit_pat(pat);
448
- vis.visit_span(span);
449
- }
450
-
451
447
pub fn walk_flat_map_pat_field<T: MutVisitor>(
452
448
vis: &mut T,
453
449
mut fp: PatField,
@@ -456,21 +452,13 @@ pub fn walk_flat_map_pat_field<T: MutVisitor>(
456
452
smallvec![fp]
457
453
}
458
454
459
- fn walk_use_tree<T: MutVisitor>(vis: &mut T, use_tree: &mut UseTree) {
460
- let UseTree { prefix, kind, span } = use_tree;
461
- vis.visit_path(prefix);
462
- match kind {
463
- UseTreeKind::Simple(rename) => visit_opt(rename, |rename| vis.visit_ident(rename)),
464
- UseTreeKind::Nested { items, span } => {
465
- for (tree, id) in items {
466
- vis.visit_id(id);
467
- vis.visit_use_tree(tree);
468
- }
469
- vis.visit_span(span);
470
- }
471
- UseTreeKind::Glob => {}
472
- }
473
- vis.visit_span(span);
455
+ fn visit_nested_use_tree<V: MutVisitor>(
456
+ vis: &mut V,
457
+ nested_tree: &mut UseTree,
458
+ nested_id: &mut NodeId,
459
+ ) {
460
+ vis.visit_id(nested_id);
461
+ vis.visit_use_tree(nested_tree);
474
462
}
475
463
476
464
pub fn walk_arm<T: MutVisitor>(vis: &mut T, arm: &mut Arm) {
@@ -507,31 +495,6 @@ fn walk_assoc_item_constraint<T: MutVisitor>(
507
495
vis.visit_span(span);
508
496
}
509
497
510
- pub fn walk_ty_pat<T: MutVisitor>(vis: &mut T, ty: &mut TyPat) {
511
- let TyPat { id, kind, span, tokens: _ } = ty;
512
- vis.visit_id(id);
513
- match kind {
514
- TyPatKind::Range(start, end, _include_end) => {
515
- visit_opt(start, |c| vis.visit_anon_const(c));
516
- visit_opt(end, |c| vis.visit_anon_const(c));
517
- }
518
- TyPatKind::Or(variants) => visit_thin_vec(variants, |p| vis.visit_ty_pat(p)),
519
- TyPatKind::Err(_) => {}
520
- }
521
- vis.visit_span(span);
522
- }
523
-
524
- pub fn walk_variant<T: MutVisitor>(visitor: &mut T, variant: &mut Variant) {
525
- let Variant { ident, vis, attrs, id, data, disr_expr, span, is_placeholder: _ } = variant;
526
- visitor.visit_id(id);
527
- visit_attrs(visitor, attrs);
528
- visitor.visit_vis(vis);
529
- visitor.visit_ident(ident);
530
- visitor.visit_variant_data(data);
531
- visit_opt(disr_expr, |disr_expr| visitor.visit_anon_const(disr_expr));
532
- visitor.visit_span(span);
533
- }
534
-
535
498
pub fn walk_flat_map_variant<T: MutVisitor>(
536
499
vis: &mut T,
537
500
mut variant: Variant,
@@ -540,25 +503,6 @@ pub fn walk_flat_map_variant<T: MutVisitor>(
540
503
smallvec![variant]
541
504
}
542
505
543
- fn walk_ident<T: MutVisitor>(vis: &mut T, Ident { name: _, span }: &mut Ident) {
544
- vis.visit_span(span);
545
- }
546
-
547
- fn walk_path<T: MutVisitor>(vis: &mut T, Path { segments, span, tokens: _ }: &mut Path) {
548
- for segment in segments {
549
- vis.visit_path_segment(segment);
550
- }
551
- vis.visit_span(span);
552
- }
553
-
554
- fn walk_qself<T: MutVisitor>(vis: &mut T, qself: &mut Option<P<QSelf>>) {
555
- visit_opt(qself, |qself| {
556
- let QSelf { ty, path_span, position: _ } = &mut **qself;
557
- vis.visit_ty(ty);
558
- vis.visit_span(path_span);
559
- })
560
- }
561
-
562
506
fn walk_generic_args<T: MutVisitor>(vis: &mut T, generic_args: &mut GenericArgs) {
563
507
match generic_args {
564
508
GenericArgs::AngleBracketed(data) => vis.visit_angle_bracketed_parameter_data(data),
@@ -841,11 +785,6 @@ fn walk_variant_data<T: MutVisitor>(vis: &mut T, vdata: &mut VariantData) {
841
785
}
842
786
}
843
787
844
- fn walk_trait_ref<T: MutVisitor>(vis: &mut T, TraitRef { path, ref_id }: &mut TraitRef) {
845
- vis.visit_id(ref_id);
846
- vis.visit_path(path);
847
- }
848
-
849
788
pub fn walk_field_def<T: MutVisitor>(visitor: &mut T, fd: &mut FieldDef) {
850
789
let FieldDef { span, ident, vis, id, ty, attrs, is_placeholder: _, safety, default } = fd;
851
790
visitor.visit_id(id);
@@ -866,15 +805,6 @@ pub fn walk_flat_map_field_def<T: MutVisitor>(
866
805
smallvec![fd]
867
806
}
868
807
869
- pub fn walk_expr_field<T: MutVisitor>(vis: &mut T, f: &mut ExprField) {
870
- let ExprField { ident, expr, span, is_shorthand: _, attrs, id, is_placeholder: _ } = f;
871
- vis.visit_id(id);
872
- visit_attrs(vis, attrs);
873
- vis.visit_ident(ident);
874
- vis.visit_expr(expr);
875
- vis.visit_span(span);
876
- }
877
-
878
808
pub fn walk_flat_map_expr_field<T: MutVisitor>(
879
809
vis: &mut T,
880
810
mut f: ExprField,
0 commit comments