Skip to content

Commit 2729bfb

Browse files
authored
Unrolled build for #141675
Rollup merge of #141675 - nnethercote:ItemKind-field-order, r=fee1-dead Reorder `ast::ItemKind::{Struct,Enum,Union}` fields. So they match the order of the parts in the source code, e.g.: ``` struct Foo<T, U> { t: T, u: U } <-><----> <------------> / | \ ident generics variant_data ``` r? `@fee1-dead`
2 parents 5f025f3 + 4c4a40f commit 2729bfb

File tree

20 files changed

+54
-56
lines changed

20 files changed

+54
-56
lines changed

compiler/rustc_ast/src/ast.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3417,9 +3417,9 @@ impl Item {
34173417
ItemKind::Fn(i) => Some(&i.generics),
34183418
ItemKind::TyAlias(i) => Some(&i.generics),
34193419
ItemKind::TraitAlias(_, generics, _)
3420-
| ItemKind::Enum(_, _, generics)
3421-
| ItemKind::Struct(_, _, generics)
3422-
| ItemKind::Union(_, _, generics) => Some(&generics),
3420+
| ItemKind::Enum(_, generics, _)
3421+
| ItemKind::Struct(_, generics, _)
3422+
| ItemKind::Union(_, generics, _) => Some(&generics),
34233423
ItemKind::Trait(i) => Some(&i.generics),
34243424
ItemKind::Impl(i) => Some(&i.generics),
34253425
}
@@ -3663,15 +3663,15 @@ pub enum ItemKind {
36633663
/// An enum definition (`enum`).
36643664
///
36653665
/// E.g., `enum Foo<A, B> { C<A>, D<B> }`.
3666-
Enum(Ident, EnumDef, Generics),
3666+
Enum(Ident, Generics, EnumDef),
36673667
/// A struct definition (`struct`).
36683668
///
36693669
/// E.g., `struct Foo<A> { x: A }`.
3670-
Struct(Ident, VariantData, Generics),
3670+
Struct(Ident, Generics, VariantData),
36713671
/// A union definition (`union`).
36723672
///
36733673
/// E.g., `union Foo<A, B> { x: A, y: B }`.
3674-
Union(Ident, VariantData, Generics),
3674+
Union(Ident, Generics, VariantData),
36753675
/// A trait declaration (`trait`).
36763676
///
36773677
/// E.g., `trait Foo { .. }`, `trait Foo<T> { .. }` or `auto trait Foo {}`.
@@ -3688,10 +3688,8 @@ pub enum ItemKind {
36883688
///
36893689
/// E.g., `foo!(..)`.
36903690
MacCall(P<MacCall>),
3691-
36923691
/// A macro definition.
36933692
MacroDef(Ident, MacroDef),
3694-
36953693
/// A single delegation item (`reuse`).
36963694
///
36973695
/// E.g. `reuse <Type as Trait>::name { target_expr_template }`.
@@ -3767,9 +3765,9 @@ impl ItemKind {
37673765
Self::Fn(box Fn { generics, .. })
37683766
| Self::TyAlias(box TyAlias { generics, .. })
37693767
| Self::Const(box ConstItem { generics, .. })
3770-
| Self::Enum(_, _, generics)
3771-
| Self::Struct(_, _, generics)
3772-
| Self::Union(_, _, generics)
3768+
| Self::Enum(_, generics, _)
3769+
| Self::Struct(_, generics, _)
3770+
| Self::Union(_, generics, _)
37733771
| Self::Trait(box Trait { generics, .. })
37743772
| Self::TraitAlias(_, generics, _)
37753773
| Self::Impl(box Impl { generics, .. }) => Some(generics),

compiler/rustc_ast/src/visit.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -508,16 +508,16 @@ macro_rules! common_visitor_and_walkers {
508508
)?
509509
$(<V as Visitor<$lt>>::Result::output())?
510510
}
511-
ItemKind::Enum(ident, enum_definition, generics) => {
511+
ItemKind::Enum(ident, generics, enum_definition) => {
512512
try_visit!(vis.visit_ident(ident));
513513
try_visit!(vis.visit_generics(generics));
514514
$(${ignore($mut)}
515515
enum_definition.variants.flat_map_in_place(|variant| vis.flat_map_variant(variant));
516516
)?
517517
$(${ignore($lt)}vis.visit_enum_def(enum_definition))?
518518
}
519-
ItemKind::Struct(ident, variant_data, generics)
520-
| ItemKind::Union(ident, variant_data, generics) => {
519+
ItemKind::Struct(ident, generics, variant_data)
520+
| ItemKind::Union(ident, generics, variant_data) => {
521521
try_visit!(vis.visit_ident(ident));
522522
try_visit!(vis.visit_generics(generics));
523523
vis.visit_variant_data(variant_data)

compiler/rustc_ast_lowering/src/item.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
306306
);
307307
hir::ItemKind::TyAlias(ident, ty, generics)
308308
}
309-
ItemKind::Enum(ident, enum_definition, generics) => {
309+
ItemKind::Enum(ident, generics, enum_definition) => {
310310
let ident = self.lower_ident(*ident);
311311
let (generics, variants) = self.lower_generics(
312312
generics,
@@ -320,7 +320,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
320320
);
321321
hir::ItemKind::Enum(ident, hir::EnumDef { variants }, generics)
322322
}
323-
ItemKind::Struct(ident, struct_def, generics) => {
323+
ItemKind::Struct(ident, generics, struct_def) => {
324324
let ident = self.lower_ident(*ident);
325325
let (generics, struct_def) = self.lower_generics(
326326
generics,
@@ -330,7 +330,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
330330
);
331331
hir::ItemKind::Struct(ident, struct_def, generics)
332332
}
333-
ItemKind::Union(ident, vdata, generics) => {
333+
ItemKind::Union(ident, generics, vdata) => {
334334
let ident = self.lower_ident(*ident);
335335
let (generics, vdata) = self.lower_generics(
336336
generics,

compiler/rustc_ast_passes/src/ast_validation.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,7 +1010,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
10101010
});
10111011
self.extern_mod_span = old_item;
10121012
}
1013-
ItemKind::Enum(_, def, _) => {
1013+
ItemKind::Enum(_, _, def) => {
10141014
for variant in &def.variants {
10151015
self.visibility_not_permitted(
10161016
&variant.vis,
@@ -1061,7 +1061,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
10611061
}
10621062
visit::walk_item(self, item)
10631063
}
1064-
ItemKind::Struct(ident, vdata, generics) => match vdata {
1064+
ItemKind::Struct(ident, generics, vdata) => match vdata {
10651065
VariantData::Struct { fields, .. } => {
10661066
self.visit_attrs_vis_ident(&item.attrs, &item.vis, ident);
10671067
self.visit_generics(generics);
@@ -1070,7 +1070,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
10701070
}
10711071
_ => visit::walk_item(self, item),
10721072
},
1073-
ItemKind::Union(ident, vdata, generics) => {
1073+
ItemKind::Union(ident, generics, vdata) => {
10741074
if vdata.fields().is_empty() {
10751075
self.dcx().emit_err(errors::FieldlessUnion { span: item.span });
10761076
}

compiler/rustc_ast_pretty/src/pprust/state/item.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,14 +298,14 @@ impl<'a> State<'a> {
298298
*defaultness,
299299
);
300300
}
301-
ast::ItemKind::Enum(ident, enum_definition, params) => {
302-
self.print_enum_def(enum_definition, params, *ident, item.span, &item.vis);
301+
ast::ItemKind::Enum(ident, generics, enum_definition) => {
302+
self.print_enum_def(enum_definition, generics, *ident, item.span, &item.vis);
303303
}
304-
ast::ItemKind::Struct(ident, struct_def, generics) => {
304+
ast::ItemKind::Struct(ident, generics, struct_def) => {
305305
let (cb, ib) = self.head(visibility_qualified(&item.vis, "struct"));
306306
self.print_struct(struct_def, generics, *ident, item.span, true, cb, ib);
307307
}
308-
ast::ItemKind::Union(ident, struct_def, generics) => {
308+
ast::ItemKind::Union(ident, generics, struct_def) => {
309309
let (cb, ib) = self.head(visibility_qualified(&item.vis, "union"));
310310
self.print_struct(struct_def, generics, *ident, item.span, true, cb, ib);
311311
}

compiler/rustc_builtin_macros/src/deriving/clone.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ pub(crate) fn expand_deriving_clone(
3434
let is_simple;
3535
match item {
3636
Annotatable::Item(annitem) => match &annitem.kind {
37-
ItemKind::Struct(_, _, Generics { params, .. })
38-
| ItemKind::Enum(_, _, Generics { params, .. }) => {
37+
ItemKind::Struct(_, Generics { params, .. }, _)
38+
| ItemKind::Enum(_, Generics { params, .. }, _) => {
3939
let container_id = cx.current_expansion.id.expn_data().parent.expect_local();
4040
let has_derive_copy = cx.resolver.has_derive_copy(container_id);
4141
if has_derive_copy

compiler/rustc_builtin_macros/src/deriving/cmp/partial_ord.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub(crate) fn expand_deriving_partial_ord(
2121

2222
// Order in which to perform matching
2323
let discr_then_data = if let Annotatable::Item(item) = item
24-
&& let ItemKind::Enum(_, def, _) = &item.kind
24+
&& let ItemKind::Enum(_, _, def) = &item.kind
2525
{
2626
let dataful: Vec<bool> = def.variants.iter().map(|v| !v.data.fields().is_empty()).collect();
2727
match dataful.iter().filter(|&&b| b).count() {

compiler/rustc_builtin_macros/src/deriving/coerce_pointee.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pub(crate) fn expand_deriving_coerce_pointee(
3030
item.visit_with(&mut DetectNonGenericPointeeAttr { cx });
3131

3232
let (name_ident, generics) = if let Annotatable::Item(aitem) = item
33-
&& let ItemKind::Struct(ident, struct_data, g) = &aitem.kind
33+
&& let ItemKind::Struct(ident, g, struct_data) = &aitem.kind
3434
{
3535
if !matches!(
3636
struct_data,

compiler/rustc_builtin_macros/src/deriving/generic/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -488,23 +488,23 @@ impl<'a> TraitDef<'a> {
488488
);
489489

490490
let newitem = match &item.kind {
491-
ast::ItemKind::Struct(ident, struct_def, generics) => self.expand_struct_def(
491+
ast::ItemKind::Struct(ident, generics, struct_def) => self.expand_struct_def(
492492
cx,
493493
struct_def,
494494
*ident,
495495
generics,
496496
from_scratch,
497497
is_packed,
498498
),
499-
ast::ItemKind::Enum(ident, enum_def, generics) => {
499+
ast::ItemKind::Enum(ident, generics, enum_def) => {
500500
// We ignore `is_packed` here, because `repr(packed)`
501501
// enums cause an error later on.
502502
//
503503
// This can only cause further compilation errors
504504
// downstream in blatantly illegal code, so it is fine.
505505
self.expand_enum_def(cx, enum_def, *ident, generics, from_scratch)
506506
}
507-
ast::ItemKind::Union(ident, struct_def, generics) => {
507+
ast::ItemKind::Union(ident, generics, struct_def) => {
508508
if self.supports_unions {
509509
self.expand_struct_def(
510510
cx,

compiler/rustc_expand/src/base.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1424,7 +1424,7 @@ pub fn parse_macro_name_and_helper_attrs(
14241424
/// See #73345 and #83125 for more details.
14251425
/// FIXME(#73933): Remove this eventually.
14261426
fn pretty_printing_compatibility_hack(item: &Item, psess: &ParseSess) {
1427-
if let ast::ItemKind::Enum(ident, enum_def, _) = &item.kind
1427+
if let ast::ItemKind::Enum(ident, _, enum_def) = &item.kind
14281428
&& ident.name == sym::ProceduralMasqueradeDummyType
14291429
&& let [variant] = &*enum_def.variants
14301430
&& variant.ident.name == sym::Input

compiler/rustc_parse/src/parser/item.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1577,7 +1577,7 @@ impl<'a> Parser<'a> {
15771577
};
15781578

15791579
let enum_definition = EnumDef { variants: variants.into_iter().flatten().collect() };
1580-
Ok(ItemKind::Enum(ident, enum_definition, generics))
1580+
Ok(ItemKind::Enum(ident, generics, enum_definition))
15811581
}
15821582

15831583
fn parse_enum_variant(&mut self, span: Span) -> PResult<'a, Option<Variant>> {
@@ -1732,7 +1732,7 @@ impl<'a> Parser<'a> {
17321732
return Err(self.dcx().create_err(err));
17331733
};
17341734

1735-
Ok(ItemKind::Struct(ident, vdata, generics))
1735+
Ok(ItemKind::Struct(ident, generics, vdata))
17361736
}
17371737

17381738
/// Parses `union Foo { ... }`.
@@ -1764,7 +1764,7 @@ impl<'a> Parser<'a> {
17641764
return Err(err);
17651765
};
17661766

1767-
Ok(ItemKind::Union(ident, vdata, generics))
1767+
Ok(ItemKind::Union(ident, generics, vdata))
17681768
}
17691769

17701770
/// This function parses the fields of record structs:

compiler/rustc_resolve/src/build_reduced_graph.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,7 @@ impl<'a, 'ra, 'tcx> BuildReducedGraphVisitor<'a, 'ra, 'tcx> {
823823
}
824824

825825
// These items live in both the type and value namespaces.
826-
ItemKind::Struct(ident, ref vdata, _) => {
826+
ItemKind::Struct(ident, _, ref vdata) => {
827827
self.build_reduced_graph_for_struct_variant(
828828
vdata.fields(),
829829
ident,
@@ -874,7 +874,7 @@ impl<'a, 'ra, 'tcx> BuildReducedGraphVisitor<'a, 'ra, 'tcx> {
874874
}
875875
}
876876

877-
ItemKind::Union(ident, ref vdata, _) => {
877+
ItemKind::Union(ident, _, ref vdata) => {
878878
self.build_reduced_graph_for_struct_variant(
879879
vdata.fields(),
880880
ident,

compiler/rustc_resolve/src/def_collector.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
162162
self.with_parent(def_id, |this| {
163163
this.with_impl_trait(ImplTraitContext::Existential, |this| {
164164
match i.kind {
165-
ItemKind::Struct(_, ref struct_def, _)
166-
| ItemKind::Union(_, ref struct_def, _) => {
165+
ItemKind::Struct(_, _, ref struct_def)
166+
| ItemKind::Union(_, _, ref struct_def) => {
167167
// If this is a unit or tuple-like struct, register the constructor.
168168
if let Some((ctor_kind, ctor_node_id)) = CtorKind::from_ast(struct_def) {
169169
this.create_def(

compiler/rustc_resolve/src/effective_visibilities.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ impl<'a, 'ra, 'tcx> Visitor<'a> for EffectiveVisibilitiesVisitor<'a, 'ra, 'tcx>
252252
self.current_private_vis = prev_private_vis;
253253
}
254254

255-
ast::ItemKind::Enum(_, EnumDef { ref variants }, _) => {
255+
ast::ItemKind::Enum(_, _, EnumDef { ref variants }) => {
256256
self.set_bindings_effective_visibilities(def_id);
257257
for variant in variants {
258258
let variant_def_id = self.r.local_def_id(variant.id);
@@ -262,7 +262,7 @@ impl<'a, 'ra, 'tcx> Visitor<'a> for EffectiveVisibilitiesVisitor<'a, 'ra, 'tcx>
262262
}
263263
}
264264

265-
ast::ItemKind::Struct(_, ref def, _) | ast::ItemKind::Union(_, ref def, _) => {
265+
ast::ItemKind::Struct(_, _, ref def) | ast::ItemKind::Union(_, _, ref def) => {
266266
for field in def.fields() {
267267
self.update_field(self.r.local_def_id(field.id), def_id);
268268
}

compiler/rustc_resolve/src/late.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2694,9 +2694,9 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
26942694
self.resolve_define_opaques(define_opaque);
26952695
}
26962696

2697-
ItemKind::Enum(_, _, ref generics)
2698-
| ItemKind::Struct(_, _, ref generics)
2699-
| ItemKind::Union(_, _, ref generics) => {
2697+
ItemKind::Enum(_, ref generics, _)
2698+
| ItemKind::Struct(_, ref generics, _)
2699+
| ItemKind::Union(_, ref generics, _) => {
27002700
self.resolve_adt(item, generics);
27012701
}
27022702

@@ -5243,9 +5243,9 @@ impl<'ast> Visitor<'ast> for ItemInfoCollector<'_, '_, '_> {
52435243
ItemKind::TyAlias(box TyAlias { generics, .. })
52445244
| ItemKind::Const(box ConstItem { generics, .. })
52455245
| ItemKind::Fn(box Fn { generics, .. })
5246-
| ItemKind::Enum(_, _, generics)
5247-
| ItemKind::Struct(_, _, generics)
5248-
| ItemKind::Union(_, _, generics)
5246+
| ItemKind::Enum(_, generics, _)
5247+
| ItemKind::Struct(_, generics, _)
5248+
| ItemKind::Union(_, generics, _)
52495249
| ItemKind::Impl(box Impl { generics, .. })
52505250
| ItemKind::Trait(box Trait { generics, .. })
52515251
| ItemKind::TraitAlias(_, generics, _) => {

src/tools/clippy/clippy_lints/src/field_scoped_visibility_modifiers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ declare_lint_pass!(FieldScopedVisibilityModifiers => [FIELD_SCOPED_VISIBILITY_MO
5151

5252
impl EarlyLintPass for FieldScopedVisibilityModifiers {
5353
fn check_item(&mut self, cx: &EarlyContext<'_>, item: &Item) {
54-
let ItemKind::Struct(_, ref st, _) = item.kind else {
54+
let ItemKind::Struct(_, _, ref st) = item.kind else {
5555
return;
5656
};
5757
for field in st.fields() {

src/tools/clippy/clippy_lints/src/partial_pub_fields.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ declare_lint_pass!(PartialPubFields => [PARTIAL_PUB_FIELDS]);
4141

4242
impl EarlyLintPass for PartialPubFields {
4343
fn check_item(&mut self, cx: &EarlyContext<'_>, item: &Item) {
44-
let ItemKind::Struct(_, ref st, _) = item.kind else {
44+
let ItemKind::Struct(_, _, ref st) = item.kind else {
4545
return;
4646
};
4747

src/tools/clippy/clippy_utils/src/ast_utils/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -436,11 +436,11 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
436436
&& over(lb, rb, eq_generic_bound)
437437
&& both(lt.as_ref(), rt.as_ref(), |l, r| eq_ty(l, r))
438438
},
439-
(Enum(li, le, lg), Enum(ri, re, rg)) => {
440-
eq_id(*li, *ri) && over(&le.variants, &re.variants, eq_variant) && eq_generics(lg, rg)
439+
(Enum(li, lg, le), Enum(ri, rg, re)) => {
440+
eq_id(*li, *ri) && eq_generics(lg, rg) && over(&le.variants, &re.variants, eq_variant)
441441
},
442-
(Struct(li, lv, lg), Struct(ri, rv, rg)) | (Union(li, lv, lg), Union(ri, rv, rg)) => {
443-
eq_id(*li, *ri) && eq_variant_data(lv, rv) && eq_generics(lg, rg)
442+
(Struct(li, lg, lv), Struct(ri, rg, rv)) | (Union(li, lg, lv), Union(ri, rg, rv)) => {
443+
eq_id(*li, *ri) && eq_generics(lg, rg) && eq_variant_data(lv, rv)
444444
},
445445
(
446446
Trait(box ast::Trait {

src/tools/rustfmt/src/items.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,10 +1110,10 @@ impl<'a> StructParts<'a> {
11101110

11111111
pub(crate) fn from_item(item: &'a ast::Item) -> Self {
11121112
let (prefix, def, ident, generics) = match item.kind {
1113-
ast::ItemKind::Struct(ident, ref def, ref generics) => {
1113+
ast::ItemKind::Struct(ident, ref generics, ref def) => {
11141114
("struct ", def, ident, generics)
11151115
}
1116-
ast::ItemKind::Union(ident, ref def, ref generics) => ("union ", def, ident, generics),
1116+
ast::ItemKind::Union(ident, ref generics, ref def) => ("union ", def, ident, generics),
11171117
_ => unreachable!(),
11181118
};
11191119
StructParts {

src/tools/rustfmt/src/visitor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ impl<'b, 'a: 'b> FmtVisitor<'a> {
521521
ast::ItemKind::Struct(..) | ast::ItemKind::Union(..) => {
522522
self.visit_struct(&StructParts::from_item(item));
523523
}
524-
ast::ItemKind::Enum(ident, ref def, ref generics) => {
524+
ast::ItemKind::Enum(ident, ref generics, ref def) => {
525525
self.format_missing_with_indent(source!(self, item.span).lo());
526526
self.visit_enum(ident, &item.vis, def, generics, item.span);
527527
self.last_pos = source!(self, item.span).hi();

0 commit comments

Comments
 (0)