Skip to content

Commit 0525276

Browse files
committed
Auto merge of rust-lang#125741 - petrochenkov:atvisord, r=<try>
ast: Standardize visiting order for attributes and node IDs This should only affect `macro_rules` scopes and order of diagnostics. This is blocked on rust-lang#125734 and will also need a crater run.
2 parents 91c0823 + baccb16 commit 0525276

14 files changed

+205
-173
lines changed

compiler/rustc_ast/src/mut_visit.rs

+21-21
Original file line numberDiff line numberDiff line change
@@ -429,10 +429,10 @@ pub fn noop_flat_map_pat_field<T: MutVisitor>(
429429
) -> SmallVec<[PatField; 1]> {
430430
let PatField { attrs, id, ident, is_placeholder: _, is_shorthand: _, pat, span } = &mut fp;
431431
vis.visit_id(id);
432+
visit_attrs(attrs, vis);
432433
vis.visit_ident(ident);
433434
vis.visit_pat(pat);
434435
vis.visit_span(span);
435-
visit_attrs(attrs, vis);
436436
smallvec![fp]
437437
}
438438

@@ -443,8 +443,8 @@ fn noop_visit_use_tree<T: MutVisitor>(use_tree: &mut UseTree, vis: &mut T) {
443443
UseTreeKind::Simple(rename) => visit_opt(rename, |rename| vis.visit_ident(rename)),
444444
UseTreeKind::Nested { items, .. } => {
445445
for (tree, id) in items {
446-
vis.visit_use_tree(tree);
447446
vis.visit_id(id);
447+
vis.visit_use_tree(tree);
448448
}
449449
}
450450
UseTreeKind::Glob => {}
@@ -454,8 +454,8 @@ fn noop_visit_use_tree<T: MutVisitor>(use_tree: &mut UseTree, vis: &mut T) {
454454

455455
pub fn noop_flat_map_arm<T: MutVisitor>(mut arm: Arm, vis: &mut T) -> SmallVec<[Arm; 1]> {
456456
let Arm { attrs, pat, guard, body, span, id, is_placeholder: _ } = &mut arm;
457-
visit_attrs(attrs, vis);
458457
vis.visit_id(id);
458+
visit_attrs(attrs, vis);
459459
vis.visit_pat(pat);
460460
visit_opt(guard, |guard| vis.visit_expr(guard));
461461
visit_opt(body, |body| vis.visit_expr(body));
@@ -553,10 +553,10 @@ pub fn noop_flat_map_variant<T: MutVisitor>(
553553
visitor: &mut T,
554554
) -> SmallVec<[Variant; 1]> {
555555
let Variant { ident, vis, attrs, id, data, disr_expr, span, is_placeholder: _ } = &mut variant;
556+
visitor.visit_id(id);
557+
visit_attrs(attrs, visitor);
556558
visitor.visit_ident(ident);
557559
visitor.visit_vis(vis);
558-
visit_attrs(attrs, visitor);
559-
visitor.visit_id(id);
560560
visitor.visit_variant_data(data);
561561
visit_opt(disr_expr, |disr_expr| visitor.visit_anon_const(disr_expr));
562562
visitor.visit_span(span);
@@ -570,8 +570,8 @@ fn noop_visit_ident<T: MutVisitor>(Ident { name: _, span }: &mut Ident, vis: &mu
570570
fn noop_visit_path<T: MutVisitor>(Path { segments, span, tokens }: &mut Path, vis: &mut T) {
571571
vis.visit_span(span);
572572
for PathSegment { ident, id, args } in segments {
573-
vis.visit_ident(ident);
574573
vis.visit_id(id);
574+
vis.visit_ident(ident);
575575
visit_opt(args, |args| vis.visit_generic_args(args));
576576
}
577577
visit_lazy_tts(tokens, vis);
@@ -625,6 +625,7 @@ fn noop_visit_parenthesized_parameter_data<T: MutVisitor>(
625625
fn noop_visit_local<T: MutVisitor>(local: &mut P<Local>, vis: &mut T) {
626626
let Local { id, pat, ty, kind, span, colon_sp, attrs, tokens } = local.deref_mut();
627627
vis.visit_id(id);
628+
visit_attrs(attrs, vis);
628629
vis.visit_pat(pat);
629630
visit_opt(ty, |ty| vis.visit_ty(ty));
630631
match kind {
@@ -639,7 +640,6 @@ fn noop_visit_local<T: MutVisitor>(local: &mut P<Local>, vis: &mut T) {
639640
}
640641
vis.visit_span(span);
641642
visit_opt(colon_sp, |sp| vis.visit_span(sp));
642-
visit_attrs(attrs, vis);
643643
visit_lazy_tts(tokens, vis);
644644
}
645645

@@ -896,9 +896,9 @@ fn noop_visit_coroutine_kind<T: MutVisitor>(coroutine_kind: &mut CoroutineKind,
896896
CoroutineKind::Async { span, closure_id, return_impl_trait_id }
897897
| CoroutineKind::Gen { span, closure_id, return_impl_trait_id }
898898
| CoroutineKind::AsyncGen { span, closure_id, return_impl_trait_id } => {
899-
vis.visit_span(span);
900899
vis.visit_id(closure_id);
901900
vis.visit_id(return_impl_trait_id);
901+
vis.visit_span(span);
902902
}
903903
}
904904
}
@@ -929,8 +929,8 @@ fn noop_visit_precise_capturing_arg<T: MutVisitor>(arg: &mut PreciseCapturingArg
929929
vis.visit_lifetime(lt);
930930
}
931931
PreciseCapturingArg::Arg(path, id) => {
932-
vis.visit_path(path);
933932
vis.visit_id(id);
933+
vis.visit_path(path);
934934
}
935935
}
936936
}
@@ -941,11 +941,11 @@ pub fn noop_flat_map_generic_param<T: MutVisitor>(
941941
) -> SmallVec<[GenericParam; 1]> {
942942
let GenericParam { id, ident, attrs, bounds, kind, colon_span, is_placeholder: _ } = &mut param;
943943
vis.visit_id(id);
944+
visit_attrs(attrs, vis);
944945
vis.visit_ident(ident);
945946
if let Some(colon_span) = colon_span {
946947
vis.visit_span(colon_span);
947948
}
948-
visit_attrs(attrs, vis);
949949
visit_vec(bounds, |bound| noop_visit_param_bound(bound, vis));
950950
match kind {
951951
GenericParamKind::Lifetime => {}
@@ -1012,16 +1012,16 @@ fn noop_visit_variant_data<T: MutVisitor>(vdata: &mut VariantData, vis: &mut T)
10121012
fields.flat_map_in_place(|field| vis.flat_map_field_def(field));
10131013
}
10141014
VariantData::Tuple(fields, id) => {
1015-
fields.flat_map_in_place(|field| vis.flat_map_field_def(field));
10161015
vis.visit_id(id);
1016+
fields.flat_map_in_place(|field| vis.flat_map_field_def(field));
10171017
}
10181018
VariantData::Unit(id) => vis.visit_id(id),
10191019
}
10201020
}
10211021

10221022
fn noop_visit_trait_ref<T: MutVisitor>(TraitRef { path, ref_id }: &mut TraitRef, vis: &mut T) {
1023-
vis.visit_path(path);
10241023
vis.visit_id(ref_id);
1024+
vis.visit_path(path);
10251025
}
10261026

10271027
fn noop_visit_poly_trait_ref<T: MutVisitor>(p: &mut PolyTraitRef, vis: &mut T) {
@@ -1036,12 +1036,12 @@ pub fn noop_flat_map_field_def<T: MutVisitor>(
10361036
visitor: &mut T,
10371037
) -> SmallVec<[FieldDef; 1]> {
10381038
let FieldDef { span, ident, vis, id, ty, attrs, is_placeholder: _ } = &mut fd;
1039+
visitor.visit_id(id);
1040+
visit_attrs(attrs, visitor);
10391041
visitor.visit_span(span);
10401042
visit_opt(ident, |ident| visitor.visit_ident(ident));
10411043
visitor.visit_vis(vis);
1042-
visitor.visit_id(id);
10431044
visitor.visit_ty(ty);
1044-
visit_attrs(attrs, visitor);
10451045
smallvec![fd]
10461046
}
10471047

@@ -1050,11 +1050,11 @@ pub fn noop_flat_map_expr_field<T: MutVisitor>(
10501050
vis: &mut T,
10511051
) -> SmallVec<[ExprField; 1]> {
10521052
let ExprField { ident, expr, span, is_shorthand: _, attrs, id, is_placeholder: _ } = &mut f;
1053+
vis.visit_id(id);
1054+
visit_attrs(attrs, vis);
10531055
vis.visit_ident(ident);
10541056
vis.visit_expr(expr);
1055-
vis.visit_id(id);
10561057
vis.visit_span(span);
1057-
visit_attrs(attrs, vis);
10581058
smallvec![f]
10591059
}
10601060

@@ -1408,6 +1408,8 @@ pub fn noop_visit_expr<T: MutVisitor>(
14081408
Expr { kind, id, span, attrs, tokens }: &mut Expr,
14091409
vis: &mut T,
14101410
) {
1411+
vis.visit_id(id);
1412+
visit_attrs(attrs, vis);
14111413
match kind {
14121414
ExprKind::Array(exprs) => visit_thin_exprs(exprs, vis),
14131415
ExprKind::ConstBlock(anon_const) => {
@@ -1428,8 +1430,8 @@ pub fn noop_visit_expr<T: MutVisitor>(
14281430
args: call_args,
14291431
span,
14301432
}) => {
1431-
vis.visit_ident(ident);
14321433
vis.visit_id(id);
1434+
vis.visit_ident(ident);
14331435
visit_opt(seg_args, |args| vis.visit_generic_args(args));
14341436
vis.visit_method_receiver_expr(receiver);
14351437
visit_thin_exprs(call_args, vis);
@@ -1580,9 +1582,7 @@ pub fn noop_visit_expr<T: MutVisitor>(
15801582
ExprKind::TryBlock(body) => vis.visit_block(body),
15811583
ExprKind::Lit(_) | ExprKind::IncludedBytes(..) | ExprKind::Err(_) | ExprKind::Dummy => {}
15821584
}
1583-
vis.visit_id(id);
15841585
vis.visit_span(span);
1585-
visit_attrs(attrs, vis);
15861586
visit_lazy_tts(tokens, vis);
15871587
}
15881588

@@ -1624,8 +1624,8 @@ fn noop_flat_map_stmt_kind<T: MutVisitor>(kind: StmtKind, vis: &mut T) -> SmallV
16241624
StmtKind::Empty => smallvec![StmtKind::Empty],
16251625
StmtKind::MacCall(mut mac) => {
16261626
let MacCallStmt { mac: mac_, style: _, attrs, tokens } = mac.deref_mut();
1627-
vis.visit_mac_call(mac_);
16281627
visit_attrs(attrs, vis);
1628+
vis.visit_mac_call(mac_);
16291629
visit_lazy_tts(tokens, vis);
16301630
smallvec![StmtKind::MacCall(mac)]
16311631
}
@@ -1636,8 +1636,8 @@ fn noop_visit_vis<T: MutVisitor>(visibility: &mut Visibility, vis: &mut T) {
16361636
match &mut visibility.kind {
16371637
VisibilityKind::Public | VisibilityKind::Inherited => {}
16381638
VisibilityKind::Restricted { path, id, shorthand: _ } => {
1639-
vis.visit_path(path);
16401639
vis.visit_id(id);
1640+
vis.visit_path(path);
16411641
}
16421642
}
16431643
vis.visit_span(&mut visibility.span);

compiler/rustc_ast/src/visit.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,8 @@ pub trait Visitor<'ast>: Sized {
285285
}
286286

287287
pub fn walk_crate<'a, V: Visitor<'a>>(visitor: &mut V, krate: &'a Crate) -> V::Result {
288-
walk_list!(visitor, visit_item, &krate.items);
289288
walk_list!(visitor, visit_attribute, &krate.attrs);
289+
walk_list!(visitor, visit_item, &krate.items);
290290
V::Result::output()
291291
}
292292

@@ -440,25 +440,25 @@ pub fn walk_variant<'a, V: Visitor<'a>>(visitor: &mut V, variant: &'a Variant) -
440440
where
441441
V: Visitor<'a>,
442442
{
443+
walk_list!(visitor, visit_attribute, &variant.attrs);
443444
try_visit!(visitor.visit_ident(variant.ident));
444445
try_visit!(visitor.visit_vis(&variant.vis));
445446
try_visit!(visitor.visit_variant_data(&variant.data));
446447
visit_opt!(visitor, visit_variant_discr, &variant.disr_expr);
447-
walk_list!(visitor, visit_attribute, &variant.attrs);
448448
V::Result::output()
449449
}
450450

451451
pub fn walk_expr_field<'a, V: Visitor<'a>>(visitor: &mut V, f: &'a ExprField) -> V::Result {
452+
walk_list!(visitor, visit_attribute, &f.attrs);
452453
try_visit!(visitor.visit_expr(&f.expr));
453454
try_visit!(visitor.visit_ident(f.ident));
454-
walk_list!(visitor, visit_attribute, &f.attrs);
455455
V::Result::output()
456456
}
457457

458458
pub fn walk_pat_field<'a, V: Visitor<'a>>(visitor: &mut V, fp: &'a PatField) -> V::Result {
459+
walk_list!(visitor, visit_attribute, &fp.attrs);
459460
try_visit!(visitor.visit_ident(fp.ident));
460461
try_visit!(visitor.visit_pat(&fp.pat));
461-
walk_list!(visitor, visit_attribute, &fp.attrs);
462462
V::Result::output()
463463
}
464464

@@ -701,8 +701,8 @@ pub fn walk_generic_param<'a, V: Visitor<'a>>(
701701
visitor: &mut V,
702702
param: &'a GenericParam,
703703
) -> V::Result {
704-
try_visit!(visitor.visit_ident(param.ident));
705704
walk_list!(visitor, visit_attribute, &param.attrs);
705+
try_visit!(visitor.visit_ident(param.ident));
706706
walk_list!(visitor, visit_param_bound, &param.bounds, BoundKind::Bound);
707707
match &param.kind {
708708
GenericParamKind::Lifetime => (),
@@ -852,10 +852,10 @@ pub fn walk_assoc_item<'a, V: Visitor<'a>>(
852852
ctxt: AssocCtxt,
853853
) -> V::Result {
854854
let &Item { id: _, span: _, ident, ref vis, ref attrs, ref kind, tokens: _ } = item;
855+
walk_list!(visitor, visit_attribute, attrs);
855856
try_visit!(visitor.visit_vis(vis));
856857
try_visit!(visitor.visit_ident(ident));
857858
try_visit!(kind.walk(item, ctxt, visitor));
858-
walk_list!(visitor, visit_attribute, attrs);
859859
V::Result::output()
860860
}
861861

@@ -868,10 +868,10 @@ pub fn walk_struct_def<'a, V: Visitor<'a>>(
868868
}
869869

870870
pub fn walk_field_def<'a, V: Visitor<'a>>(visitor: &mut V, field: &'a FieldDef) -> V::Result {
871+
walk_list!(visitor, visit_attribute, &field.attrs);
871872
try_visit!(visitor.visit_vis(&field.vis));
872873
visit_opt!(visitor, visit_ident, field.ident);
873874
try_visit!(visitor.visit_ty(&field.ty));
874-
walk_list!(visitor, visit_attribute, &field.attrs);
875875
V::Result::output()
876876
}
877877

@@ -888,8 +888,8 @@ pub fn walk_stmt<'a, V: Visitor<'a>>(visitor: &mut V, statement: &'a Stmt) -> V:
888888
StmtKind::Empty => {}
889889
StmtKind::MacCall(mac) => {
890890
let MacCallStmt { mac, attrs, style: _, tokens: _ } = &**mac;
891-
try_visit!(visitor.visit_mac_call(mac));
892891
walk_list!(visitor, visit_attribute, attrs);
892+
try_visit!(visitor.visit_mac_call(mac));
893893
}
894894
}
895895
V::Result::output()
@@ -1111,10 +1111,10 @@ pub fn walk_param<'a, V: Visitor<'a>>(visitor: &mut V, param: &'a Param) -> V::R
11111111
}
11121112

11131113
pub fn walk_arm<'a, V: Visitor<'a>>(visitor: &mut V, arm: &'a Arm) -> V::Result {
1114+
walk_list!(visitor, visit_attribute, &arm.attrs);
11141115
try_visit!(visitor.visit_pat(&arm.pat));
11151116
visit_opt!(visitor, visit_expr, &arm.guard);
11161117
visit_opt!(visitor, visit_expr, &arm.body);
1117-
walk_list!(visitor, visit_attribute, &arm.attrs);
11181118
V::Result::output()
11191119
}
11201120

src/tools/clippy/tests/ui/cfg_attr_cargo_clippy.stderr

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
error: `feature = "cargo-clippy"` was replaced by `clippy`
2-
--> tests/ui/cfg_attr_cargo_clippy.rs:5:12
2+
--> tests/ui/cfg_attr_cargo_clippy.rs:3:13
33
|
4-
LL | #[cfg_attr(feature = "cargo-clippy", derive(Debug))]
5-
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `clippy`
4+
LL | #![cfg_attr(feature = "cargo-clippy", doc = "a")]
5+
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `clippy`
66
|
77
= note: `-D clippy::deprecated-clippy-cfg-attr` implied by `-D warnings`
88
= help: to override `-D warnings` add `#[allow(clippy::deprecated_clippy_cfg_attr)]`
99

10+
error: `feature = "cargo-clippy"` was replaced by `clippy`
11+
--> tests/ui/cfg_attr_cargo_clippy.rs:5:12
12+
|
13+
LL | #[cfg_attr(feature = "cargo-clippy", derive(Debug))]
14+
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `clippy`
15+
1016
error: `feature = "cargo-clippy"` was replaced by `clippy`
1117
--> tests/ui/cfg_attr_cargo_clippy.rs:6:16
1218
|
@@ -37,11 +43,5 @@ error: `feature = "cargo-clippy"` was replaced by `clippy`
3743
LL | #[cfg(all(feature = "cargo-clippy"))]
3844
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `clippy`
3945

40-
error: `feature = "cargo-clippy"` was replaced by `clippy`
41-
--> tests/ui/cfg_attr_cargo_clippy.rs:3:13
42-
|
43-
LL | #![cfg_attr(feature = "cargo-clippy", doc = "a")]
44-
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `clippy`
45-
4646
error: aborting due to 7 previous errors
4747

0 commit comments

Comments
 (0)