diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2019-11-29 09:26:18 +0100 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2019-12-21 23:32:42 +0100 |
| commit | 4f1c88be46a1d541ab09214a3b894192e19b554a (patch) | |
| tree | 42c2a1010a58bcb6cd69fb0dbc206b6b57549609 /src | |
| parent | 5fec1ca0ff5727d1f4474f8dc3edf7c631baf712 (diff) | |
Use Arena inside hir::EnumDef.
Diffstat (limited to 'src')
25 files changed, 78 insertions, 74 deletions
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 @@ impl Visitor<'tcx> for CheckAttrVisitor<'tcx> { 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 @@ impl 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 @@ pub trait Visitor<'v>: Sized { 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 @@ pub trait Visitor<'v>: Sized { 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 @@ impl LoweringContext<'_, 'hir> { 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 @@ impl LoweringContext<'_, 'hir> { 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 @@ impl LoweringContext<'_, 'hir> { } } - 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 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, '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 @@ impl<'hir> Map<'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 @@ impl<'hir> Map<'hir> { } } - 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<T:Named> Named for Spanned<T> { 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<Variant>, +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<Attribute>, + 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<AnonConst>, /// Span @@ -2397,24 +2397,24 @@ impl StructField { /// 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<StructField>, /* recovered */ bool), + Struct(&'hir [StructField], /* recovered */ bool), /// A tuple variant. /// /// E.g., `Bar(..)` as in `enum Foo { Bar(..) }`. - Tuple(HirVec<StructField>, 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<A, B> {C<A>, D<B>}`. - Enum(EnumDef, Generics), + Enum(EnumDef<'hir>, Generics), /// A struct definition, e.g., `struct Foo<A> {x: A}`. - Struct(VariantData, Generics), + Struct(VariantData<'hir>, Generics), /// A union definition, e.g., `union Foo<A, B> {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 @@ impl<'a> State<'a> { } 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 @@ impl<'a> State<'a> { } pub fn print_variants(&mut self, - variants: &[hir::Variant], + variants: &[hir::Variant<'_>], span: syntax_pos::Span) { self.bopen(); @@ -770,7 +770,7 @@ impl<'a> State<'a> { } 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 @@ impl<'a> State<'a> { } } - 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 @@ for LateContextAndPass<'a, 'tcx, T> { } 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 @@ for LateContextAndPass<'a, 'tcx, T> { } 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 @@ macro_rules! late_lint_methods { 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 @@ impl intravisit::Visitor<'tcx> for LintLevelMapBuilder<'_, 'tcx> { } 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 @@ impl<'a, 'tcx> Visitor<'tcx> for Annotator<'a, '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 @@ impl<'a, 'tcx> Visitor<'tcx> for MissingStabilityAnnotations<'a, '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 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingDoc { } } - 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 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonSnakeCase { 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 @@ fn mir_keys(tcx: TyCtxt<'_>, krate: CrateNum) -> &DefIdSet { } 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 @@ impl<'a, 'tcx> Visitor<'tcx> for MarkSymbolVisitor<'a, 'tcx> { 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 @@ impl<'v, 'k, 'tcx> ItemLikeVisitor<'v> for LifeSeeder<'k, 'tcx> { 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 @@ impl DeadVisitor<'tcx> { && !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 @@ impl Visitor<'tcx> for DeadVisitor<'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 @@ impl<'v> hir_visit::Visitor<'v> for StatCollector<'v> { } 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 @@ impl Visitor<'tcx> for EmbargoVisitor<'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 @@ impl Visitor<'tcx> for EmbargoVisitor<'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 @@ impl<'a, 'tcx> Visitor<'tcx> for ObsoleteVisiblePrivateTypesVisitor<'a, 'tcx> { } 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 @@ impl<'a, 'tcx> Visitor<'tcx> for PrivateItemsInPublicInterfacesVisitor<'a, '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 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { AdtVariant { fields } } - fn enum_variants(&self, enum_def: &hir::EnumDef) -> Vec<AdtVariant<'tcx>> { + fn enum_variants(&self, enum_def: &hir::EnumDef<'_>) -> Vec<AdtVariant<'tcx>> { 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<DefId>, 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 @@ impl<'a, 'tcx, 'v> ItemLikeVisitor<'v> for ConstraintContext<'a, 'tcx> { 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 @@ impl<'a, 'tcx, 'v> ItemLikeVisitor<'v> for TermsContext<'a, 'tcx> { 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 @@ impl Clean<Item> for doctree::Union<'_> { } } -impl Clean<VariantStruct> for ::rustc::hir::VariantData { +impl Clean<VariantStruct> for ::rustc::hir::VariantData<'_> { fn clean(&self, cx: &DocContext<'_>) -> VariantStruct { VariantStruct { struct_type: doctree::struct_type_from_def(self), @@ -1923,7 +1923,7 @@ impl Clean<Item> for ty::VariantDef { } } -impl Clean<VariantKind> for hir::VariantData { +impl Clean<VariantKind> 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, } |
