From: Camille GILLOT Date: Fri, 29 Nov 2019 08:26:18 +0000 (+0100) Subject: Use Arena inside hir::EnumDef. X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=4f1c88be46a1d541ab09214a3b894192e19b554a;p=rust.git Use Arena inside hir::EnumDef. --- diff --git a/src/librustc/arena.rs b/src/librustc/arena.rs index 3f0c0277f8a..a892a7a25ba 100644 --- a/src/librustc/arena.rs +++ b/src/librustc/arena.rs @@ -131,8 +131,10 @@ macro_rules! arena_types { [] impl_item_ref: rustc::hir::ImplItemRef, [] macro_def: rustc::hir::MacroDef<$tcx>, [] path: rustc::hir::Path, + [] struct_field: rustc::hir::StructField, [] trait_item_ref: rustc::hir::TraitItemRef, [] ty: rustc::hir::Ty, + [] variant: rustc::hir::Variant<$tcx>, ], $tcx); ) } diff --git a/src/librustc/hir/check_attr.rs b/src/librustc/hir/check_attr.rs index 03282fc99a0..9e95cba7fcb 100644 --- a/src/librustc/hir/check_attr.rs +++ b/src/librustc/hir/check_attr.rs @@ -529,7 +529,7 @@ fn visit_expr(&mut self, expr: &'tcx hir::Expr) { fn is_c_like_enum(item: &Item<'_>) -> bool { if let ItemKind::Enum(ref def, _) = item.kind { - for variant in &def.variants { + for variant in def.variants { match variant.data { hir::VariantData::Unit(..) => { /* continue */ } _ => return false, diff --git a/src/librustc/hir/def.rs b/src/librustc/hir/def.rs index 231b054f974..d4e89c5f047 100644 --- a/src/librustc/hir/def.rs +++ b/src/librustc/hir/def.rs @@ -340,7 +340,7 @@ pub fn from_ast(vdata: &ast::VariantData) -> CtorKind { } } - pub fn from_hir(vdata: &hir::VariantData) -> CtorKind { + pub fn from_hir(vdata: &hir::VariantData<'_>) -> CtorKind { match *vdata { hir::VariantData::Tuple(..) => CtorKind::Fn, hir::VariantData::Unit(..) => CtorKind::Const, diff --git a/src/librustc/hir/intravisit.rs b/src/librustc/hir/intravisit.rs index fcd2d758420..094d390f826 100644 --- a/src/librustc/hir/intravisit.rs +++ b/src/librustc/hir/intravisit.rs @@ -317,7 +317,7 @@ fn visit_poly_trait_ref(&mut self, t: &'v PolyTraitRef, m: TraitBoundModifier) { walk_poly_trait_ref(self, t, m) } fn visit_variant_data(&mut self, - s: &'v VariantData, + s: &'v VariantData<'v>, _: Name, _: &'v Generics, _parent_id: HirId, @@ -328,13 +328,13 @@ fn visit_struct_field(&mut self, s: &'v StructField) { walk_struct_field(self, s) } fn visit_enum_def(&mut self, - enum_definition: &'v EnumDef, + enum_definition: &'v EnumDef<'v>, generics: &'v Generics, item_id: HirId, _: Span) { walk_enum_def(self, enum_definition, generics, item_id) } - fn visit_variant(&mut self, v: &'v Variant, g: &'v Generics, item_id: HirId) { + fn visit_variant(&mut self, v: &'v Variant<'v>, g: &'v Generics, item_id: HirId) { walk_variant(self, v, g, item_id) } fn visit_label(&mut self, label: &'v Label) { @@ -565,19 +565,19 @@ pub fn walk_use<'v, V: Visitor<'v>>(visitor: &mut V, } pub fn walk_enum_def<'v, V: Visitor<'v>>(visitor: &mut V, - enum_definition: &'v EnumDef, + enum_definition: &'v EnumDef<'v>, generics: &'v Generics, item_id: HirId) { visitor.visit_id(item_id); walk_list!(visitor, visit_variant, - &enum_definition.variants, + enum_definition.variants, generics, item_id); } pub fn walk_variant<'v, V: Visitor<'v>>(visitor: &mut V, - variant: &'v Variant, + variant: &'v Variant<'v>, generics: &'v Generics, parent_item_id: HirId) { visitor.visit_ident(variant.ident); @@ -588,7 +588,7 @@ pub fn walk_variant<'v, V: Visitor<'v>>(visitor: &mut V, parent_item_id, variant.span); walk_list!(visitor, visit_anon_const, &variant.disr_expr); - walk_list!(visitor, visit_attribute, &variant.attrs); + walk_list!(visitor, visit_attribute, variant.attrs); } pub fn walk_ty<'v, V: Visitor<'v>>(visitor: &mut V, typ: &'v Ty) { @@ -948,7 +948,7 @@ pub fn walk_impl_item_ref<'v, V: Visitor<'v>>(visitor: &mut V, impl_item_ref: &' visitor.visit_defaultness(defaultness); } -pub fn walk_struct_def<'v, V: Visitor<'v>>(visitor: &mut V, struct_definition: &'v VariantData) { +pub fn walk_struct_def<'v, V: Visitor<'v>>(visitor: &mut V, struct_definition: &'v VariantData<'v>) { if let Some(ctor_hir_id) = struct_definition.ctor_hir_id() { visitor.visit_id(ctor_hir_id); } diff --git a/src/librustc/hir/lowering/item.rs b/src/librustc/hir/lowering/item.rs index 1953d6f88f8..158957b4ada 100644 --- a/src/librustc/hir/lowering/item.rs +++ b/src/librustc/hir/lowering/item.rs @@ -363,11 +363,12 @@ fn lower_item_kind( ItemKind::Enum(ref enum_definition, ref generics) => { hir::ItemKind::Enum( hir::EnumDef { - variants: enum_definition + variants: self.arena.alloc_from_iter( + enum_definition .variants .iter() .map(|x| self.lower_variant(x)) - .collect(), + ), }, self.lower_generics(generics, ImplTraitContext::disallowed()), ) @@ -756,9 +757,9 @@ fn lower_global_asm(&mut self, ga: &GlobalAsm) -> &'hir hir::GlobalAsm { self.arena.alloc(hir::GlobalAsm { asm: ga.asm }) } - fn lower_variant(&mut self, v: &Variant) -> hir::Variant { + fn lower_variant(&mut self, v: &Variant) -> hir::Variant<'hir> { hir::Variant { - attrs: self.lower_attrs(&v.attrs), + attrs: self.lower_attrs_arena(&v.attrs), data: self.lower_variant_data(&v.data), disr_expr: v.disr_expr.as_ref().map(|e| self.lower_anon_const(e)), id: self.lower_node_id(v.id), @@ -767,19 +768,20 @@ fn lower_variant(&mut self, v: &Variant) -> hir::Variant { } } - fn lower_variant_data(&mut self, vdata: &VariantData) -> hir::VariantData { + fn lower_variant_data(&mut self, vdata: &VariantData) -> hir::VariantData<'hir> { match *vdata { VariantData::Struct(ref fields, recovered) => hir::VariantData::Struct( - fields.iter().enumerate().map(|f| self.lower_struct_field(f)).collect(), + self.arena.alloc_from_iter(fields.iter().enumerate().map(|f| self.lower_struct_field(f))), recovered, ), VariantData::Tuple(ref fields, id) => { hir::VariantData::Tuple( - fields + self.arena.alloc_from_iter( + fields .iter() .enumerate() .map(|f| self.lower_struct_field(f)) - .collect(), + ), self.lower_node_id(id), ) }, diff --git a/src/librustc/hir/map/collector.rs b/src/librustc/hir/map/collector.rs index 8e60581fbce..00d61fb2fb0 100644 --- a/src/librustc/hir/map/collector.rs +++ b/src/librustc/hir/map/collector.rs @@ -539,7 +539,7 @@ fn visit_macro_def(&mut self, macro_def: &'hir MacroDef<'hir>) { }); } - fn visit_variant(&mut self, v: &'hir Variant, g: &'hir Generics, item_id: HirId) { + fn visit_variant(&mut self, v: &'hir Variant<'hir>, g: &'hir Generics, item_id: HirId) { self.insert(v.span, v.id, Node::Variant(v)); self.with_parent(v.id, |this| { // Register the constructor of this variant. diff --git a/src/librustc/hir/map/mod.rs b/src/librustc/hir/map/mod.rs index 6803a605437..8865157a319 100644 --- a/src/librustc/hir/map/mod.rs +++ b/src/librustc/hir/map/mod.rs @@ -980,7 +980,7 @@ pub fn expect_trait_item(&self, id: HirId) -> &'hir TraitItem<'hir> { } } - pub fn expect_variant_data(&self, id: HirId) -> &'hir VariantData { + pub fn expect_variant_data(&self, id: HirId) -> &'hir VariantData<'hir> { match self.find(id) { Some(Node::Item(i)) => { match i.kind { @@ -995,7 +995,7 @@ pub fn expect_variant_data(&self, id: HirId) -> &'hir VariantData { } } - pub fn expect_variant(&self, id: HirId) -> &'hir Variant { + pub fn expect_variant(&self, id: HirId) -> &'hir Variant<'hir> { match self.find(id) { Some(Node::Variant(variant)) => variant, _ => bug!("expected variant, found {}", self.node_to_string(id)), @@ -1250,7 +1250,7 @@ impl Named for Spanned { fn name(&self) -> Name { self.node.name() } impl Named for Item<'_> { fn name(&self) -> Name { self.ident.name } } impl Named for ForeignItem<'_> { fn name(&self) -> Name { self.ident.name } } -impl Named for Variant { fn name(&self) -> Name { self.ident.name } } +impl Named for Variant<'_> { fn name(&self) -> Name { self.ident.name } } impl Named for StructField { fn name(&self) -> Name { self.ident.name } } impl Named for TraitItem<'_> { fn name(&self) -> Name { self.ident.name } } impl Named for ImplItem<'_> { fn name(&self) -> Name { self.ident.name } } diff --git a/src/librustc/hir/mod.rs b/src/librustc/hir/mod.rs index 51368d2acc3..813cbe503e2 100644 --- a/src/librustc/hir/mod.rs +++ b/src/librustc/hir/mod.rs @@ -2263,21 +2263,21 @@ pub struct GlobalAsm { } #[derive(RustcEncodable, RustcDecodable, Debug, HashStable)] -pub struct EnumDef { - pub variants: HirVec, +pub struct EnumDef<'hir> { + pub variants: &'hir [Variant<'hir>], } #[derive(RustcEncodable, RustcDecodable, Debug, HashStable)] -pub struct Variant { +pub struct Variant<'hir> { /// Name of the variant. #[stable_hasher(project(name))] pub ident: Ident, /// Attributes of the variant. - pub attrs: HirVec, + pub attrs: &'hir [Attribute], /// Id of the variant (not the constructor, see `VariantData::ctor_hir_id()`). pub id: HirId, /// Fields and constructor id of the variant. - pub data: VariantData, + pub data: VariantData<'hir>, /// Explicit discriminant (e.g., `Foo = 1`). pub disr_expr: Option, /// Span @@ -2397,24 +2397,24 @@ pub fn is_positional(&self) -> bool { /// Fields and constructor IDs of enum variants and structs. #[derive(RustcEncodable, RustcDecodable, Debug, HashStable)] -pub enum VariantData { +pub enum VariantData<'hir> { /// A struct variant. /// /// E.g., `Bar { .. }` as in `enum Foo { Bar { .. } }`. - Struct(HirVec, /* recovered */ bool), + Struct(&'hir [StructField], /* recovered */ bool), /// A tuple variant. /// /// E.g., `Bar(..)` as in `enum Foo { Bar(..) }`. - Tuple(HirVec, HirId), + Tuple(&'hir [StructField], HirId), /// A unit variant. /// /// E.g., `Bar = ..` as in `enum Foo { Bar = .. }`. Unit(HirId), } -impl VariantData { +impl VariantData<'hir> { /// Return the fields of this variant. - pub fn fields(&self) -> &[StructField] { + pub fn fields(&self) -> &'hir [StructField] { match *self { VariantData::Struct(ref fields, ..) | VariantData::Tuple(ref fields, ..) => fields, _ => &[], @@ -2499,11 +2499,11 @@ pub enum ItemKind<'hir> { /// An opaque `impl Trait` type alias, e.g., `type Foo = impl Bar;`. OpaqueTy(OpaqueTy), /// An enum definition, e.g., `enum Foo {C, D}`. - Enum(EnumDef, Generics), + Enum(EnumDef<'hir>, Generics), /// A struct definition, e.g., `struct Foo {x: A}`. - Struct(VariantData, Generics), + Struct(VariantData<'hir>, Generics), /// A union definition, e.g., `union Foo {x: A, y: B}`. - Union(VariantData, Generics), + Union(VariantData<'hir>, Generics), /// A trait definition. Trait(IsAuto, Unsafety, Generics, GenericBounds, &'hir [TraitItemRef]), /// A trait alias. @@ -2791,7 +2791,7 @@ pub enum Node<'hir> { ForeignItem(&'hir ForeignItem<'hir>), TraitItem(&'hir TraitItem<'hir>), ImplItem(&'hir ImplItem<'hir>), - Variant(&'hir Variant), + Variant(&'hir Variant<'hir>), Field(&'hir StructField), AnonConst(&'hir AnonConst), Expr(&'hir Expr), @@ -2808,7 +2808,7 @@ pub enum Node<'hir> { /// `Ctor` refers to the constructor of an enum variant or struct. Only tuple or unit variants /// with synthesized constructors. - Ctor(&'hir VariantData), + Ctor(&'hir VariantData<'hir>), Lifetime(&'hir Lifetime), GenericParam(&'hir GenericParam), diff --git a/src/librustc/hir/print.rs b/src/librustc/hir/print.rs index dc270fc40c9..63d8afc7ec9 100644 --- a/src/librustc/hir/print.rs +++ b/src/librustc/hir/print.rs @@ -708,7 +708,7 @@ fn print_poly_trait_ref(&mut self, t: &hir::PolyTraitRef) { } pub fn print_enum_def(&mut self, - enum_definition: &hir::EnumDef, + enum_definition: &hir::EnumDef<'_>, generics: &hir::Generics, name: ast::Name, span: syntax_pos::Span, @@ -723,7 +723,7 @@ pub fn print_enum_def(&mut self, } pub fn print_variants(&mut self, - variants: &[hir::Variant], + variants: &[hir::Variant<'_>], span: syntax_pos::Span) { self.bopen(); @@ -770,7 +770,7 @@ pub fn print_defaultness(&mut self, defaultness: hir::Defaultness) { } pub fn print_struct(&mut self, - struct_def: &hir::VariantData, + struct_def: &hir::VariantData<'_>, generics: &hir::Generics, name: ast::Name, span: syntax_pos::Span, @@ -819,7 +819,7 @@ pub fn print_struct(&mut self, } } - pub fn print_variant(&mut self, v: &hir::Variant) { + pub fn print_variant(&mut self, v: &hir::Variant<'_>) { self.head(""); let generics = hir::Generics::empty(); self.print_struct(&v.data, &generics, v.ident.name, v.span, false); diff --git a/src/librustc/lint/context.rs b/src/librustc/lint/context.rs index 490599e582f..6ca85f8da90 100644 --- a/src/librustc/lint/context.rs +++ b/src/librustc/lint/context.rs @@ -990,7 +990,7 @@ fn visit_fn(&mut self, fk: hir_visit::FnKind<'tcx>, decl: &'tcx hir::FnDecl, } fn visit_variant_data(&mut self, - s: &'tcx hir::VariantData, + s: &'tcx hir::VariantData<'tcx>, _: ast::Name, _: &'tcx hir::Generics, _: hir::HirId, @@ -1008,7 +1008,7 @@ fn visit_struct_field(&mut self, s: &'tcx hir::StructField) { } fn visit_variant(&mut self, - v: &'tcx hir::Variant, + v: &'tcx hir::Variant<'tcx>, g: &'tcx hir::Generics, item_id: hir::HirId) { self.with_lint_attrs(v.id, &v.attrs, |cx| { diff --git a/src/librustc/lint/mod.rs b/src/librustc/lint/mod.rs index 12417d6089a..fc05b0bd5a9 100644 --- a/src/librustc/lint/mod.rs +++ b/src/librustc/lint/mod.rs @@ -128,11 +128,11 @@ fn check_fn_post( fn check_trait_item_post(a: &$hir hir::TraitItem<$hir>); fn check_impl_item(a: &$hir hir::ImplItem<$hir>); fn check_impl_item_post(a: &$hir hir::ImplItem<$hir>); - fn check_struct_def(a: &$hir hir::VariantData); - fn check_struct_def_post(a: &$hir hir::VariantData); + fn check_struct_def(a: &$hir hir::VariantData<$hir>); + fn check_struct_def_post(a: &$hir hir::VariantData<$hir>); fn check_struct_field(a: &$hir hir::StructField); - fn check_variant(a: &$hir hir::Variant); - fn check_variant_post(a: &$hir hir::Variant); + fn check_variant(a: &$hir hir::Variant<$hir>); + fn check_variant_post(a: &$hir hir::Variant<$hir>); fn check_lifetime(a: &$hir hir::Lifetime); fn check_path(a: &$hir hir::Path, b: hir::HirId); fn check_attribute(a: &$hir ast::Attribute); @@ -629,7 +629,7 @@ fn visit_struct_field(&mut self, s: &'tcx hir::StructField) { } fn visit_variant(&mut self, - v: &'tcx hir::Variant, + v: &'tcx hir::Variant<'tcx>, g: &'tcx hir::Generics, item_id: hir::HirId) { self.with_lint_attrs(v.id, &v.attrs, |builder| { diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs index 0aef5b24fc7..8eb1ce14d1f 100644 --- a/src/librustc/middle/stability.rs +++ b/src/librustc/middle/stability.rs @@ -300,7 +300,7 @@ fn visit_impl_item(&mut self, ii: &'tcx hir::ImplItem<'tcx>) { }); } - fn visit_variant(&mut self, var: &'tcx Variant, g: &'tcx Generics, item_id: HirId) { + fn visit_variant(&mut self, var: &'tcx Variant<'tcx>, g: &'tcx Generics, item_id: HirId) { self.annotate(var.id, &var.attrs, var.span, AnnotationKind::Required, |v| { if let Some(ctor_hir_id) = var.data.ctor_hir_id() { @@ -382,7 +382,7 @@ fn visit_impl_item(&mut self, ii: &'tcx hir::ImplItem<'tcx>) { intravisit::walk_impl_item(self, ii); } - fn visit_variant(&mut self, var: &'tcx Variant, g: &'tcx Generics, item_id: HirId) { + fn visit_variant(&mut self, var: &'tcx Variant<'tcx>, g: &'tcx Generics, item_id: HirId) { self.check_missing_stability(var.id, var.span, "variant"); intravisit::walk_variant(self, var, g, item_id); } diff --git a/src/librustc_lint/builtin.rs b/src/librustc_lint/builtin.rs index 2037daded6d..156307e31bc 100644 --- a/src/librustc_lint/builtin.rs +++ b/src/librustc_lint/builtin.rs @@ -483,7 +483,7 @@ fn check_struct_field(&mut self, cx: &LateContext<'_, '_>, sf: &hir::StructField } } - fn check_variant(&mut self, cx: &LateContext<'_, '_>, v: &hir::Variant) { + fn check_variant(&mut self, cx: &LateContext<'_, '_>, v: &hir::Variant<'_>) { self.check_missing_docs_attrs(cx, Some(v.id), &v.attrs, diff --git a/src/librustc_lint/nonstandard_style.rs b/src/librustc_lint/nonstandard_style.rs index 2f06d5f3f7b..63a5f8681d6 100644 --- a/src/librustc_lint/nonstandard_style.rs +++ b/src/librustc_lint/nonstandard_style.rs @@ -349,7 +349,7 @@ fn check_pat(&mut self, cx: &LateContext<'_, '_>, p: &hir::Pat) { fn check_struct_def( &mut self, cx: &LateContext<'_, '_>, - s: &hir::VariantData, + s: &hir::VariantData<'_>, ) { for sf in s.fields() { self.check_snake_case(cx, "structure field", &sf.ident); diff --git a/src/librustc_mir/transform/mod.rs b/src/librustc_mir/transform/mod.rs index 2e1a08a0224..350df575047 100644 --- a/src/librustc_mir/transform/mod.rs +++ b/src/librustc_mir/transform/mod.rs @@ -74,7 +74,7 @@ struct GatherCtors<'a, 'tcx> { } impl<'a, 'tcx> Visitor<'tcx> for GatherCtors<'a, 'tcx> { fn visit_variant_data(&mut self, - v: &'tcx hir::VariantData, + v: &'tcx hir::VariantData<'tcx>, _: ast::Name, _: &'tcx hir::Generics, _: hir::HirId, diff --git a/src/librustc_passes/dead.rs b/src/librustc_passes/dead.rs index dba5a3dbd2b..7c3cc80e5d2 100644 --- a/src/librustc_passes/dead.rs +++ b/src/librustc_passes/dead.rs @@ -223,7 +223,7 @@ fn visit_nested_body(&mut self, body: hir::BodyId) { self.tables = old_tables; } - fn visit_variant_data(&mut self, def: &'tcx hir::VariantData, _: ast::Name, + fn visit_variant_data(&mut self, def: &'tcx hir::VariantData<'tcx>, _: ast::Name, _: &hir::Generics, _: hir::HirId, _: syntax_pos::Span) { let has_repr_c = self.repr_has_repr_c; let inherited_pub_visibility = self.inherited_pub_visibility; @@ -375,7 +375,7 @@ fn visit_item(&mut self, item: &hir::Item<'_>) { self.worklist.extend(enum_def.variants.iter().map(|variant| variant.id)); } - for variant in &enum_def.variants { + for variant in enum_def.variants { if let Some(ctor_hir_id) = variant.data.ctor_hir_id() { self.struct_constructors.insert(ctor_hir_id, variant.id); } @@ -503,7 +503,7 @@ fn should_warn_about_field(&mut self, field: &hir::StructField) -> bool { && !has_allow_dead_code_or_lang_attr(self.tcx, field.hir_id, &field.attrs) } - fn should_warn_about_variant(&mut self, variant: &hir::Variant) -> bool { + fn should_warn_about_variant(&mut self, variant: &hir::Variant<'_>) -> bool { !self.symbol_is_live(variant.id) && !has_allow_dead_code_or_lang_attr(self.tcx, variant.id, @@ -610,7 +610,7 @@ fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) { } fn visit_variant(&mut self, - variant: &'tcx hir::Variant, + variant: &'tcx hir::Variant<'tcx>, g: &'tcx hir::Generics, id: hir::HirId) { if self.should_warn_about_variant(&variant) { diff --git a/src/librustc_passes/hir_stats.rs b/src/librustc_passes/hir_stats.rs index 297b527d846..0e80f93234c 100644 --- a/src/librustc_passes/hir_stats.rs +++ b/src/librustc_passes/hir_stats.rs @@ -209,7 +209,7 @@ fn visit_struct_field(&mut self, s: &'v hir::StructField) { } fn visit_variant(&mut self, - v: &'v hir::Variant, + v: &'v hir::Variant<'v>, g: &'v hir::Generics, item_id: hir::HirId) { self.record("Variant", Id::None, v); diff --git a/src/librustc_privacy/lib.rs b/src/librustc_privacy/lib.rs index 95f8cc9af35..239c75b1f1b 100644 --- a/src/librustc_privacy/lib.rs +++ b/src/librustc_privacy/lib.rs @@ -675,7 +675,7 @@ fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) { // Update levels of nested things. match item.kind { hir::ItemKind::Enum(ref def, _) => { - for variant in &def.variants { + for variant in def.variants { let variant_level = self.update(variant.id, item_level); if let Some(ctor_hir_id) = variant.data.ctor_hir_id() { self.update(ctor_hir_id, item_level); @@ -798,7 +798,7 @@ fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) { if item_level.is_some() { self.reach(item.hir_id, item_level).generics().predicates(); } - for variant in &def.variants { + for variant in def.variants { let variant_level = self.get(variant.id); if variant_level.is_some() { for field in variant.data.fields() { @@ -1637,7 +1637,7 @@ fn visit_ty(&mut self, t: &'tcx hir::Ty) { } fn visit_variant(&mut self, - v: &'tcx hir::Variant, + v: &'tcx hir::Variant<'tcx>, g: &'tcx hir::Generics, item_id: hir::HirId) { if self.access_levels.is_reachable(v.id) { @@ -1890,7 +1890,7 @@ fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) { hir::ItemKind::Enum(ref def, _) => { self.check(item.hir_id, item_visibility).generics().predicates(); - for variant in &def.variants { + for variant in def.variants { for field in variant.data.fields() { self.check(field.hir_id, item_visibility).ty(); } diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 5ba03ab753b..1cc3f3690f9 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -2435,7 +2435,7 @@ fn check_transparent(tcx: TyCtxt<'_>, sp: Span, def_id: DefId) { } #[allow(trivial_numeric_casts)] -pub fn check_enum<'tcx>(tcx: TyCtxt<'tcx>, sp: Span, vs: &'tcx [hir::Variant], id: hir::HirId) { +pub fn check_enum<'tcx>(tcx: TyCtxt<'tcx>, sp: Span, vs: &'tcx [hir::Variant<'tcx>], id: hir::HirId) { let def_id = tcx.hir().local_def_id(id); let def = tcx.adt_def(def_id); def.destructor(tcx); // force the destructor to be evaluated @@ -2472,12 +2472,12 @@ pub fn check_enum<'tcx>(tcx: TyCtxt<'tcx>, sp: Span, vs: &'tcx [hir::Variant], i if tcx.adt_def(def_id).repr.int.is_none() && tcx.features().arbitrary_enum_discriminant { let is_unit = - |var: &hir::Variant| match var.data { + |var: &hir::Variant<'_>| match var.data { hir::VariantData::Unit(..) => true, _ => false }; - let has_disr = |var: &hir::Variant| var.disr_expr.is_some(); + let has_disr = |var: &hir::Variant<'_>| var.disr_expr.is_some(); let has_non_units = vs.iter().any(|var| !is_unit(var)); let disr_units = vs.iter().any(|var| is_unit(&var) && has_disr(&var)); let disr_non_unit = vs.iter().any(|var| !is_unit(&var) && has_disr(&var)); diff --git a/src/librustc_typeck/check/wfcheck.rs b/src/librustc_typeck/check/wfcheck.rs index 5b7513b5263..e974b070dbd 100644 --- a/src/librustc_typeck/check/wfcheck.rs +++ b/src/librustc_typeck/check/wfcheck.rs @@ -1113,7 +1113,7 @@ struct AdtField<'tcx> { } impl<'a, 'tcx> FnCtxt<'a, 'tcx> { - fn non_enum_variant(&self, struct_def: &hir::VariantData) -> AdtVariant<'tcx> { + fn non_enum_variant(&self, struct_def: &hir::VariantData<'_>) -> AdtVariant<'tcx> { let fields = struct_def.fields().iter().map(|field| { let field_ty = self.tcx.type_of(self.tcx.hir().local_def_id(field.hir_id)); let field_ty = self.normalize_associated_types_in(field.span, @@ -1126,7 +1126,7 @@ fn non_enum_variant(&self, struct_def: &hir::VariantData) -> AdtVariant<'tcx> { AdtVariant { fields } } - fn enum_variants(&self, enum_def: &hir::EnumDef) -> Vec> { + fn enum_variants(&self, enum_def: &hir::EnumDef<'_>) -> Vec> { enum_def.variants.iter() .map(|variant| self.non_enum_variant(&variant.data)) .collect() diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs index 9d260bde751..224ec145520 100644 --- a/src/librustc_typeck/collect.rs +++ b/src/librustc_typeck/collect.rs @@ -529,7 +529,7 @@ fn convert_variant_ctor(tcx: TyCtxt<'_>, ctor_id: hir::HirId) { fn convert_enum_variant_types( tcx: TyCtxt<'_>, def_id: DefId, - variants: &[hir::Variant] + variants: &[hir::Variant<'_>] ) { let def = tcx.adt_def(def_id); let repr_type = def.repr.discr_type(); @@ -584,7 +584,7 @@ fn convert_variant( ctor_did: Option, ident: Ident, discr: ty::VariantDiscr, - def: &hir::VariantData, + def: &hir::VariantData<'_>, adt_kind: ty::AdtKind, parent_did: DefId, ) -> ty::VariantDef { diff --git a/src/librustc_typeck/variance/constraints.rs b/src/librustc_typeck/variance/constraints.rs index 1d16562e0e6..64357cb4a3d 100644 --- a/src/librustc_typeck/variance/constraints.rs +++ b/src/librustc_typeck/variance/constraints.rs @@ -81,7 +81,7 @@ fn visit_item(&mut self, item: &hir::Item<'_>) { hir::ItemKind::Enum(ref enum_def, _) => { self.visit_node_helper(item.hir_id); - for variant in &enum_def.variants { + for variant in enum_def.variants { if let hir::VariantData::Tuple(..) = variant.data { self.visit_node_helper(variant.data.ctor_hir_id().unwrap()); } diff --git a/src/librustc_typeck/variance/terms.rs b/src/librustc_typeck/variance/terms.rs index c97ac24ce50..95f361763e8 100644 --- a/src/librustc_typeck/variance/terms.rs +++ b/src/librustc_typeck/variance/terms.rs @@ -144,7 +144,7 @@ fn visit_item(&mut self, item: &hir::Item<'_>) { hir::ItemKind::Enum(ref enum_def, _) => { self.add_inferreds_for_item(item.hir_id); - for variant in &enum_def.variants { + for variant in enum_def.variants { if let hir::VariantData::Tuple(..) = variant.data { self.add_inferreds_for_item(variant.data.ctor_hir_id().unwrap()); } diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 55c3e9e4a24..d882a362266 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1836,7 +1836,7 @@ fn clean(&self, cx: &DocContext<'_>) -> Item { } } -impl Clean for ::rustc::hir::VariantData { +impl Clean for ::rustc::hir::VariantData<'_> { fn clean(&self, cx: &DocContext<'_>) -> VariantStruct { VariantStruct { struct_type: doctree::struct_type_from_def(self), @@ -1923,7 +1923,7 @@ fn clean(&self, cx: &DocContext<'_>) -> Item { } } -impl Clean for hir::VariantData { +impl Clean for hir::VariantData<'_> { fn clean(&self, cx: &DocContext<'_>) -> VariantKind { match self { hir::VariantData::Struct(..) => VariantKind::Struct(self.clean(cx)), diff --git a/src/librustdoc/doctree.rs b/src/librustdoc/doctree.rs index 6aa23248719..852cc0fb326 100644 --- a/src/librustdoc/doctree.rs +++ b/src/librustdoc/doctree.rs @@ -118,7 +118,7 @@ pub struct Variant<'hir> { pub name: Name, pub id: hir::HirId, pub attrs: &'hir [ast::Attribute], - pub def: &'hir hir::VariantData, + pub def: &'hir hir::VariantData<'hir>, pub whence: Span, }