Skip to content

Commit f7a6147

Browse files
committed
Box EnumKind
1 parent 4716ce7 commit f7a6147

File tree

19 files changed

+32
-27
lines changed

19 files changed

+32
-27
lines changed

compiler/rustc_ast/src/ast.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2694,6 +2694,9 @@ pub struct ConstKind(pub Defaultness, pub P<Ty>, pub Option<P<Expr>>);
26942694
#[derive(Clone, Encodable, Decodable, Debug)]
26952695
pub struct StructUnionKind(pub VariantData, pub Generics);
26962696

2697+
#[derive(Clone, Encodable, Decodable, Debug)]
2698+
pub struct EnumKind(pub EnumDef, pub Generics);
2699+
26972700
#[derive(Clone, Encodable, Decodable, Debug)]
26982701
pub enum ItemKind {
26992702
/// An `extern crate` item, with the optional *original* crate name if the crate was renamed.
@@ -2733,7 +2736,7 @@ pub enum ItemKind {
27332736
/// An enum definition (`enum`).
27342737
///
27352738
/// E.g., `enum Foo<A, B> { C<A>, D<B> }`.
2736-
Enum(EnumDef, Generics),
2739+
Enum(Box<EnumKind>),
27372740
/// A struct definition (`struct`).
27382741
///
27392742
/// E.g., `struct Foo<A> { x: A }`.
@@ -2802,7 +2805,7 @@ impl ItemKind {
28022805
match self {
28032806
Self::Fn(box FnKind(_, _, generics, _))
28042807
| Self::TyAlias(box TyAliasKind(_, generics, ..))
2805-
| Self::Enum(_, generics)
2808+
| Self::Enum(box EnumKind(_, generics))
28062809
| Self::Struct(box StructUnionKind(_, generics))
28072810
| Self::Union(box StructUnionKind(_, generics))
28082811
| Self::Trait(box TraitKind(_, _, generics, ..))

compiler/rustc_ast/src/mut_visit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -926,7 +926,7 @@ pub fn noop_visit_item_kind<T: MutVisitor>(kind: &mut ItemKind, vis: &mut T) {
926926
visit_bounds(bounds, vis);
927927
visit_opt(ty, |ty| vis.visit_ty(ty));
928928
}
929-
ItemKind::Enum(EnumDef { variants }, generics) => {
929+
ItemKind::Enum(box EnumKind(EnumDef { variants }, generics)) => {
930930
variants.flat_map_in_place(|variant| vis.flat_map_variant(variant));
931931
vis.visit_generics(generics);
932932
}

compiler/rustc_ast/src/token.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,7 @@ impl Nonterminal {
805805

806806
let name = item.ident.name;
807807
if name == sym::ProceduralMasqueradeDummyType || name == sym::ProcMacroHack {
808-
if let ast::ItemKind::Enum(enum_def, _) = &item.kind {
808+
if let ast::ItemKind::Enum(box ast::EnumKind(enum_def, _)) = &item.kind {
809809
if let [variant] = &*enum_def.variants {
810810
return variant.ident.name == sym::Input;
811811
}

compiler/rustc_ast/src/visit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ pub fn walk_item<'a, V: Visitor<'a>>(visitor: &mut V, item: &'a Item) {
308308
walk_list!(visitor, visit_param_bound, bounds);
309309
walk_list!(visitor, visit_ty, ty);
310310
}
311-
ItemKind::Enum(ref enum_definition, ref generics) => {
311+
ItemKind::Enum(box EnumKind(ref enum_definition, ref generics)) => {
312312
visitor.visit_generics(generics);
313313
visitor.visit_enum_def(enum_definition, generics, item.id, item.span)
314314
}

compiler/rustc_ast_lowering/src/item.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
355355
let generics = self.lower_generics(generics, ImplTraitContext::disallowed());
356356
hir::ItemKind::TyAlias(ty, generics)
357357
}
358-
ItemKind::Enum(ref enum_definition, ref generics) => hir::ItemKind::Enum(
358+
ItemKind::Enum(box EnumKind(ref enum_definition, ref generics)) => hir::ItemKind::Enum(
359359
hir::EnumDef {
360360
variants: self.arena.alloc_from_iter(
361361
enum_definition.variants.iter().map(|x| self.lower_variant(x)),

compiler/rustc_ast_lowering/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
500500
match item.kind {
501501
ItemKind::Struct(box StructUnionKind(_, ref generics))
502502
| ItemKind::Union(box StructUnionKind(_, ref generics))
503-
| ItemKind::Enum(_, ref generics)
503+
| ItemKind::Enum(box EnumKind(_, ref generics))
504504
| ItemKind::TyAlias(box TyAliasKind(_, ref generics, ..))
505505
| ItemKind::Trait(box TraitKind(_, _, ref generics, ..)) => {
506506
let def_id = self.lctx.resolver.local_def_id(item.id);

compiler/rustc_ast_passes/src/ast_validation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1019,7 +1019,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
10191019
self.extern_mod = old_item;
10201020
return; // Avoid visiting again.
10211021
}
1022-
ItemKind::Enum(ref def, _) => {
1022+
ItemKind::Enum(box EnumKind(ref def, _)) => {
10231023
for variant in &def.variants {
10241024
self.invalid_visibility(&variant.vis, None);
10251025
for field in variant.data.fields() {

compiler/rustc_ast_passes/src/feature_gate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
345345
}
346346
}
347347

348-
ast::ItemKind::Enum(ast::EnumDef { ref variants, .. }, ..) => {
348+
ast::ItemKind::Enum(box ast::EnumKind(ast::EnumDef { ref variants, .. }, ..)) => {
349349
for variant in variants {
350350
match (&variant.data, &variant.disr_expr) {
351351
(ast::VariantData::Unit(..), _) => {}

compiler/rustc_ast_pretty/src/pprust/state.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1179,7 +1179,7 @@ impl<'a> State<'a> {
11791179
let ty = ty.as_deref();
11801180
self.print_associated_type(item.ident, generics, bounds, ty, &item.vis, def);
11811181
}
1182-
ast::ItemKind::Enum(ref enum_definition, ref params) => {
1182+
ast::ItemKind::Enum(box ast::EnumKind(ref enum_definition, ref params)) => {
11831183
self.print_enum_def(enum_definition, params, item.ident, item.span, &item.vis);
11841184
}
11851185
ast::ItemKind::Struct(box ast::StructUnionKind(ref struct_def, ref generics)) => {

compiler/rustc_builtin_macros/src/deriving/clone.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ use crate::deriving::path_std;
44

55
use rustc_ast::ptr::P;
66
use rustc_ast::{
7-
self as ast, Expr, GenericArg, Generics, ItemKind, MetaItem, StructUnionKind, VariantData,
7+
self as ast, EnumKind, Expr, GenericArg, Generics, ItemKind, MetaItem, StructUnionKind,
8+
VariantData,
89
};
910
use rustc_expand::base::{Annotatable, ExtCtxt};
1011
use rustc_span::symbol::{kw, sym, Ident, Symbol};
@@ -37,7 +38,7 @@ pub fn expand_deriving_clone(
3738
match *item {
3839
Annotatable::Item(ref annitem) => match annitem.kind {
3940
ItemKind::Struct(box StructUnionKind(_, Generics { ref params, .. }))
40-
| ItemKind::Enum(_, Generics { ref params, .. }) => {
41+
| ItemKind::Enum(box EnumKind(_, Generics { ref params, .. })) => {
4142
let container_id = cx.current_expansion.id.expn_data().parent;
4243
if cx.resolver.has_derive_copy(container_id)
4344
&& !params

0 commit comments

Comments
 (0)