Skip to content

Commit e252612

Browse files
committed
Use Arena inside hir::StructField.
1 parent 4f1c88b commit e252612

File tree

18 files changed

+36
-35
lines changed

18 files changed

+36
-35
lines changed

src/librustc/arena.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ macro_rules! arena_types {
131131
[] impl_item_ref: rustc::hir::ImplItemRef,
132132
[] macro_def: rustc::hir::MacroDef<$tcx>,
133133
[] path: rustc::hir::Path,
134-
[] struct_field: rustc::hir::StructField,
134+
[] struct_field: rustc::hir::StructField<$tcx>,
135135
[] trait_item_ref: rustc::hir::TraitItemRef,
136136
[] ty: rustc::hir::Ty,
137137
[] variant: rustc::hir::Variant<$tcx>,

src/librustc/hir/intravisit.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ pub trait Visitor<'v>: Sized {
324324
_: Span) {
325325
walk_struct_def(self, s)
326326
}
327-
fn visit_struct_field(&mut self, s: &'v StructField) {
327+
fn visit_struct_field(&mut self, s: &'v StructField<'v>) {
328328
walk_struct_field(self, s)
329329
}
330330
fn visit_enum_def(&mut self,
@@ -955,12 +955,12 @@ pub fn walk_struct_def<'v, V: Visitor<'v>>(visitor: &mut V, struct_definition: &
955955
walk_list!(visitor, visit_struct_field, struct_definition.fields());
956956
}
957957

958-
pub fn walk_struct_field<'v, V: Visitor<'v>>(visitor: &mut V, struct_field: &'v StructField) {
958+
pub fn walk_struct_field<'v, V: Visitor<'v>>(visitor: &mut V, struct_field: &'v StructField<'v>) {
959959
visitor.visit_id(struct_field.hir_id);
960960
visitor.visit_vis(&struct_field.vis);
961961
visitor.visit_ident(struct_field.ident);
962962
visitor.visit_ty(&struct_field.ty);
963-
walk_list!(visitor, visit_attribute, &struct_field.attrs);
963+
walk_list!(visitor, visit_attribute, struct_field.attrs);
964964
}
965965

966966
pub fn walk_block<'v, V: Visitor<'v>>(visitor: &mut V, block: &'v Block) {

src/librustc/hir/lowering/item.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,7 @@ impl LoweringContext<'_, 'hir> {
791791
}
792792
}
793793

794-
fn lower_struct_field(&mut self, (index, f): (usize, &StructField)) -> hir::StructField {
794+
fn lower_struct_field(&mut self, (index, f): (usize, &StructField)) -> hir::StructField<'hir> {
795795
let ty = if let TyKind::Path(ref qself, ref path) = f.ty.kind {
796796
let t = self.lower_path_ty(
797797
&f.ty,
@@ -800,9 +800,10 @@ impl LoweringContext<'_, 'hir> {
800800
ParamMode::ExplicitNamed, // no `'_` in declarations (Issue #61124)
801801
ImplTraitContext::disallowed()
802802
);
803-
P(t)
803+
self.arena.alloc(t)
804804
} else {
805-
self.lower_ty(&f.ty, ImplTraitContext::disallowed())
805+
let t = self.lower_ty(&f.ty, ImplTraitContext::disallowed());
806+
self.arena.alloc(t.into_inner())
806807
};
807808
hir::StructField {
808809
span: f.span,
@@ -814,7 +815,7 @@ impl LoweringContext<'_, 'hir> {
814815
},
815816
vis: self.lower_visibility(&f.vis, None),
816817
ty,
817-
attrs: self.lower_attrs(&f.attrs),
818+
attrs: self.lower_attrs_arena(&f.attrs),
818819
}
819820
}
820821

src/librustc/hir/map/collector.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {
550550
});
551551
}
552552

553-
fn visit_struct_field(&mut self, field: &'hir StructField) {
553+
fn visit_struct_field(&mut self, field: &'hir StructField<'hir>) {
554554
self.insert(field.span, field.hir_id, Node::Field(field));
555555
self.with_parent(field.hir_id, |this| {
556556
intravisit::walk_struct_field(this, field);

src/librustc/hir/map/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1251,7 +1251,7 @@ impl<T:Named> Named for Spanned<T> { fn name(&self) -> Name { self.node.name() }
12511251
impl Named for Item<'_> { fn name(&self) -> Name { self.ident.name } }
12521252
impl Named for ForeignItem<'_> { fn name(&self) -> Name { self.ident.name } }
12531253
impl Named for Variant<'_> { fn name(&self) -> Name { self.ident.name } }
1254-
impl Named for StructField { fn name(&self) -> Name { self.ident.name } }
1254+
impl Named for StructField<'_> { fn name(&self) -> Name { self.ident.name } }
12551255
impl Named for TraitItem<'_> { fn name(&self) -> Name { self.ident.name } }
12561256
impl Named for ImplItem<'_> { fn name(&self) -> Name { self.ident.name } }
12571257

src/librustc/hir/mod.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2377,17 +2377,17 @@ impl VisibilityKind {
23772377
}
23782378

23792379
#[derive(RustcEncodable, RustcDecodable, Debug, HashStable)]
2380-
pub struct StructField {
2380+
pub struct StructField<'hir> {
23812381
pub span: Span,
23822382
#[stable_hasher(project(name))]
23832383
pub ident: Ident,
23842384
pub vis: Visibility,
23852385
pub hir_id: HirId,
2386-
pub ty: P<Ty>,
2387-
pub attrs: HirVec<Attribute>,
2386+
pub ty: &'hir Ty,
2387+
pub attrs: &'hir [Attribute],
23882388
}
23892389

2390-
impl StructField {
2390+
impl StructField<'_> {
23912391
// Still necessary in couple of places
23922392
pub fn is_positional(&self) -> bool {
23932393
let first = self.ident.as_str().as_bytes()[0];
@@ -2401,11 +2401,11 @@ pub enum VariantData<'hir> {
24012401
/// A struct variant.
24022402
///
24032403
/// E.g., `Bar { .. }` as in `enum Foo { Bar { .. } }`.
2404-
Struct(&'hir [StructField], /* recovered */ bool),
2404+
Struct(&'hir [StructField<'hir>], /* recovered */ bool),
24052405
/// A tuple variant.
24062406
///
24072407
/// E.g., `Bar(..)` as in `enum Foo { Bar(..) }`.
2408-
Tuple(&'hir [StructField], HirId),
2408+
Tuple(&'hir [StructField<'hir>], HirId),
24092409
/// A unit variant.
24102410
///
24112411
/// E.g., `Bar = ..` as in `enum Foo { Bar = .. }`.
@@ -2414,7 +2414,7 @@ pub enum VariantData<'hir> {
24142414

24152415
impl VariantData<'hir> {
24162416
/// Return the fields of this variant.
2417-
pub fn fields(&self) -> &'hir [StructField] {
2417+
pub fn fields(&self) -> &'hir [StructField<'hir>] {
24182418
match *self {
24192419
VariantData::Struct(ref fields, ..) | VariantData::Tuple(ref fields, ..) => fields,
24202420
_ => &[],
@@ -2792,7 +2792,7 @@ pub enum Node<'hir> {
27922792
TraitItem(&'hir TraitItem<'hir>),
27932793
ImplItem(&'hir ImplItem<'hir>),
27942794
Variant(&'hir Variant<'hir>),
2795-
Field(&'hir StructField),
2795+
Field(&'hir StructField<'hir>),
27962796
AnonConst(&'hir AnonConst),
27972797
Expr(&'hir Expr),
27982798
Stmt(&'hir Stmt),

src/librustc/lint/context.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1000,7 +1000,7 @@ for LateContextAndPass<'a, 'tcx, T> {
10001000
lint_callback!(self, check_struct_def_post, s);
10011001
}
10021002

1003-
fn visit_struct_field(&mut self, s: &'tcx hir::StructField) {
1003+
fn visit_struct_field(&mut self, s: &'tcx hir::StructField<'tcx>) {
10041004
self.with_lint_attrs(s.hir_id, &s.attrs, |cx| {
10051005
lint_callback!(cx, check_struct_field, s);
10061006
hir_visit::walk_struct_field(cx, s);

src/librustc/lint/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ macro_rules! late_lint_methods {
130130
fn check_impl_item_post(a: &$hir hir::ImplItem<$hir>);
131131
fn check_struct_def(a: &$hir hir::VariantData<$hir>);
132132
fn check_struct_def_post(a: &$hir hir::VariantData<$hir>);
133-
fn check_struct_field(a: &$hir hir::StructField);
133+
fn check_struct_field(a: &$hir hir::StructField<$hir>);
134134
fn check_variant(a: &$hir hir::Variant<$hir>);
135135
fn check_variant_post(a: &$hir hir::Variant<$hir>);
136136
fn check_lifetime(a: &$hir hir::Lifetime);
@@ -622,7 +622,7 @@ impl intravisit::Visitor<'tcx> for LintLevelMapBuilder<'_, 'tcx> {
622622
})
623623
}
624624

625-
fn visit_struct_field(&mut self, s: &'tcx hir::StructField) {
625+
fn visit_struct_field(&mut self, s: &'tcx hir::StructField<'tcx>) {
626626
self.with_lint_attrs(s.hir_id, &s.attrs, |builder| {
627627
intravisit::walk_struct_field(builder, s);
628628
})

src/librustc/middle/stability.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ impl<'a, 'tcx> Visitor<'tcx> for Annotator<'a, 'tcx> {
312312
})
313313
}
314314

315-
fn visit_struct_field(&mut self, s: &'tcx StructField) {
315+
fn visit_struct_field(&mut self, s: &'tcx StructField<'tcx>) {
316316
self.annotate(s.hir_id, &s.attrs, s.span, AnnotationKind::Required, |v| {
317317
intravisit::walk_struct_field(v, s);
318318
});
@@ -387,7 +387,7 @@ impl<'a, 'tcx> Visitor<'tcx> for MissingStabilityAnnotations<'a, 'tcx> {
387387
intravisit::walk_variant(self, var, g, item_id);
388388
}
389389

390-
fn visit_struct_field(&mut self, s: &'tcx StructField) {
390+
fn visit_struct_field(&mut self, s: &'tcx StructField<'tcx>) {
391391
self.check_missing_stability(s.hir_id, s.span, "field");
392392
intravisit::walk_struct_field(self, s);
393393
}

src/librustc_incremental/assert_dep_graph.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ impl Visitor<'tcx> for IfThisChanged<'tcx> {
177177
intravisit::walk_impl_item(self, impl_item);
178178
}
179179

180-
fn visit_struct_field(&mut self, s: &'tcx hir::StructField) {
180+
fn visit_struct_field(&mut self, s: &'tcx hir::StructField<'tcx>) {
181181
self.process_attrs(s.hir_id, &s.attrs);
182182
intravisit::walk_struct_field(self, s);
183183
}

src/librustc_lint/builtin.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingDoc {
473473
desc);
474474
}
475475

476-
fn check_struct_field(&mut self, cx: &LateContext<'_, '_>, sf: &hir::StructField) {
476+
fn check_struct_field(&mut self, cx: &LateContext<'_, '_>, sf: &hir::StructField<'_>) {
477477
if !sf.is_positional() {
478478
self.check_missing_docs_attrs(cx,
479479
Some(sf.hir_id),
@@ -1001,7 +1001,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnreachablePub {
10011001
foreign_item.span, true);
10021002
}
10031003

1004-
fn check_struct_field(&mut self, cx: &LateContext<'_, '_>, field: &hir::StructField) {
1004+
fn check_struct_field(&mut self, cx: &LateContext<'_, '_>, field: &hir::StructField<'_>) {
10051005
self.perform_lint(cx, "field", field.hir_id, &field.vis, field.span, false);
10061006
}
10071007

src/librustc_metadata/rmeta/encoder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,7 @@ impl EncodeContext<'tcx> {
727727
record!(self.per_def.kind[def_id] <- EntryKind::Field);
728728
record!(self.per_def.visibility[def_id] <- field.vis);
729729
record!(self.per_def.span[def_id] <- self.tcx.def_span(def_id));
730-
record!(self.per_def.attributes[def_id] <- &variant_data.fields()[field_index].attrs);
730+
record!(self.per_def.attributes[def_id] <- variant_data.fields()[field_index].attrs);
731731
self.encode_stability(def_id);
732732
self.encode_deprecation(def_id);
733733
self.encode_item_type(def_id);

src/librustc_passes/dead.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ impl DeadVisitor<'tcx> {
495495
should_warn && !self.symbol_is_live(item.hir_id)
496496
}
497497

498-
fn should_warn_about_field(&mut self, field: &hir::StructField) -> bool {
498+
fn should_warn_about_field(&mut self, field: &hir::StructField<'_>) -> bool {
499499
let field_type = self.tcx.type_of(self.tcx.hir().local_def_id(field.hir_id));
500500
!field.is_positional()
501501
&& !self.symbol_is_live(field.hir_id)
@@ -629,7 +629,7 @@ impl Visitor<'tcx> for DeadVisitor<'tcx> {
629629
intravisit::walk_foreign_item(self, fi);
630630
}
631631

632-
fn visit_struct_field(&mut self, field: &'tcx hir::StructField) {
632+
fn visit_struct_field(&mut self, field: &'tcx hir::StructField<'tcx>) {
633633
if self.should_warn_about_field(&field) {
634634
self.warn_dead_code(field.hir_id, field.span, field.ident.name, "field", "read");
635635
}

src/librustc_passes/hir_stats.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ impl<'v> hir_visit::Visitor<'v> for StatCollector<'v> {
203203
hir_visit::walk_param_bound(self, bounds)
204204
}
205205

206-
fn visit_struct_field(&mut self, s: &'v hir::StructField) {
206+
fn visit_struct_field(&mut self, s: &'v hir::StructField<'v>) {
207207
self.record("StructField", Id::Node(s.hir_id), s);
208208
hir_visit::walk_struct_field(self, s)
209209
}

src/librustc_privacy/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1647,7 +1647,7 @@ impl<'a, 'tcx> Visitor<'tcx> for ObsoleteVisiblePrivateTypesVisitor<'a, 'tcx> {
16471647
}
16481648
}
16491649

1650-
fn visit_struct_field(&mut self, s: &'tcx hir::StructField) {
1650+
fn visit_struct_field(&mut self, s: &'tcx hir::StructField<'tcx>) {
16511651
if s.vis.node.is_pub() || self.in_variant {
16521652
intravisit::walk_struct_field(self, s);
16531653
}

src/librustc_traits/lowering/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ impl Visitor<'tcx> for ClauseDumper<'tcx> {
684684
intravisit::walk_impl_item(self, impl_item);
685685
}
686686

687-
fn visit_struct_field(&mut self, s: &'tcx hir::StructField) {
687+
fn visit_struct_field(&mut self, s: &'tcx hir::StructField<'tcx>) {
688688
self.process_attrs(s.hir_id, &s.attrs);
689689
intravisit::walk_struct_field(self, s);
690690
}

src/librustdoc/clean/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1743,7 +1743,7 @@ impl<'tcx> Clean<Constant> for ty::Const<'tcx> {
17431743
}
17441744
}
17451745

1746-
impl Clean<Item> for hir::StructField {
1746+
impl Clean<Item> for hir::StructField<'_> {
17471747
fn clean(&self, cx: &DocContext<'_>) -> Item {
17481748
let local_did = cx.tcx.hir().local_def_id(self.hir_id);
17491749

src/librustdoc/doctree.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ pub struct Struct<'hir> {
8989
pub name: Name,
9090
pub generics: &'hir hir::Generics,
9191
pub attrs: &'hir [ast::Attribute],
92-
pub fields: &'hir [hir::StructField],
92+
pub fields: &'hir [hir::StructField<'hir>],
9393
pub whence: Span,
9494
}
9595

@@ -100,7 +100,7 @@ pub struct Union<'hir> {
100100
pub name: Name,
101101
pub generics: &'hir hir::Generics,
102102
pub attrs: &'hir [ast::Attribute],
103-
pub fields: &'hir [hir::StructField],
103+
pub fields: &'hir [hir::StructField<'hir>],
104104
pub whence: Span,
105105
}
106106

0 commit comments

Comments
 (0)