Skip to content

Commit b90018e

Browse files
committed
Simplify arena_types macros
1 parent cbcef3e commit b90018e

File tree

4 files changed

+65
-112
lines changed

4 files changed

+65
-112
lines changed

src/librustc_arena/lib.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -611,11 +611,7 @@ macro_rules! which_arena_for_type {
611611

612612
#[macro_export]
613613
macro_rules! declare_arena {
614-
// This macro has to take the same input as
615-
// `impl_arena_allocatable_decoders` which requires a second version of
616-
// each type. We ignore that type until we can fix
617-
// `impl_arena_allocatable_decoders`.
618-
([], [$($a:tt $name:ident: $ty:ty, $_gen_ty:ty;)*], $tcx:lifetime) => {
614+
([], [$($a:tt $name:ident: $ty:ty,)*], $tcx:lifetime) => {
619615
#[derive(Default)]
620616
pub struct Arena<$tcx> {
621617
pub dropless: $crate::DroplessArena,

src/librustc_hir/arena.rs

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,41 @@ macro_rules! arena_types {
1212
($macro:path, $args:tt, $tcx:lifetime) => (
1313
$macro!($args, [
1414
// HIR types
15-
[few] hir_krate: rustc_hir::Crate<$tcx>, rustc_hir::Crate<'_x>;
16-
[] arm: rustc_hir::Arm<$tcx>, rustc_hir::Arm<'_x>;
17-
[] asm_operand: rustc_hir::InlineAsmOperand<$tcx>, rustc_hir::InlineAsmOperand<'_x>;
18-
[] asm_template: rustc_ast::ast::InlineAsmTemplatePiece, rustc_ast::ast::InlineAsmTemplatePiece;
19-
[] attribute: rustc_ast::ast::Attribute, rustc_ast::ast::Attribute;
20-
[] block: rustc_hir::Block<$tcx>, rustc_hir::Block<'_x>;
21-
[] bare_fn_ty: rustc_hir::BareFnTy<$tcx>, rustc_hir::BareFnTy<'_x>;
22-
[few] global_asm: rustc_hir::GlobalAsm, rustc_hir::GlobalAsm;
23-
[] generic_arg: rustc_hir::GenericArg<$tcx>, rustc_hir::GenericArg<'_x>;
24-
[] generic_args: rustc_hir::GenericArgs<$tcx>, rustc_hir::GenericArgs<'_x>;
25-
[] generic_bound: rustc_hir::GenericBound<$tcx>, rustc_hir::GenericBound<'_x>;
26-
[] generic_param: rustc_hir::GenericParam<$tcx>, rustc_hir::GenericParam<'_x>;
27-
[] expr: rustc_hir::Expr<$tcx>, rustc_hir::Expr<'_x>;
28-
[] field: rustc_hir::Field<$tcx>, rustc_hir::Field<'_x>;
29-
[] field_pat: rustc_hir::FieldPat<$tcx>, rustc_hir::FieldPat<'_x>;
30-
[] fn_decl: rustc_hir::FnDecl<$tcx>, rustc_hir::FnDecl<'_x>;
31-
[] foreign_item: rustc_hir::ForeignItem<$tcx>, rustc_hir::ForeignItem<'_x>;
32-
[] impl_item_ref: rustc_hir::ImplItemRef<$tcx>, rustc_hir::ImplItemRef<'_x>;
33-
[few] inline_asm: rustc_hir::InlineAsm<$tcx>, rustc_hir::InlineAsm<'_x>;
34-
[few] llvm_inline_asm: rustc_hir::LlvmInlineAsm<$tcx>, rustc_hir::LlvmInlineAsm<'_x>;
35-
[] local: rustc_hir::Local<$tcx>, rustc_hir::Local<'_x>;
36-
[few] macro_def: rustc_hir::MacroDef<$tcx>, rustc_hir::MacroDef<'_x>;
37-
[] param: rustc_hir::Param<$tcx>, rustc_hir::Param<'_x>;
38-
[] pat: rustc_hir::Pat<$tcx>, rustc_hir::Pat<'_x>;
39-
[] path: rustc_hir::Path<$tcx>, rustc_hir::Path<'_x>;
40-
[] path_segment: rustc_hir::PathSegment<$tcx>, rustc_hir::PathSegment<'_x>;
41-
[] poly_trait_ref: rustc_hir::PolyTraitRef<$tcx>, rustc_hir::PolyTraitRef<'_x>;
42-
[] qpath: rustc_hir::QPath<$tcx>, rustc_hir::QPath<'_x>;
43-
[] stmt: rustc_hir::Stmt<$tcx>, rustc_hir::Stmt<'_x>;
44-
[] struct_field: rustc_hir::StructField<$tcx>, rustc_hir::StructField<'_x>;
45-
[] trait_item_ref: rustc_hir::TraitItemRef, rustc_hir::TraitItemRef;
46-
[] ty: rustc_hir::Ty<$tcx>, rustc_hir::Ty<'_x>;
47-
[] type_binding: rustc_hir::TypeBinding<$tcx>, rustc_hir::TypeBinding<'_x>;
48-
[] variant: rustc_hir::Variant<$tcx>, rustc_hir::Variant<'_x>;
49-
[] where_predicate: rustc_hir::WherePredicate<$tcx>, rustc_hir::WherePredicate<'_x>;
15+
[few] hir_krate: rustc_hir::Crate<$tcx>,
16+
[] arm: rustc_hir::Arm<$tcx>,
17+
[] asm_operand: rustc_hir::InlineAsmOperand<$tcx>,
18+
[] asm_template: rustc_ast::ast::InlineAsmTemplatePiece,
19+
[] attribute: rustc_ast::ast::Attribute,
20+
[] block: rustc_hir::Block<$tcx>,
21+
[] bare_fn_ty: rustc_hir::BareFnTy<$tcx>,
22+
[few] global_asm: rustc_hir::GlobalAsm,
23+
[] generic_arg: rustc_hir::GenericArg<$tcx>,
24+
[] generic_args: rustc_hir::GenericArgs<$tcx>,
25+
[] generic_bound: rustc_hir::GenericBound<$tcx>,
26+
[] generic_param: rustc_hir::GenericParam<$tcx>,
27+
[] expr: rustc_hir::Expr<$tcx>,
28+
[] field: rustc_hir::Field<$tcx>,
29+
[] field_pat: rustc_hir::FieldPat<$tcx>,
30+
[] fn_decl: rustc_hir::FnDecl<$tcx>,
31+
[] foreign_item: rustc_hir::ForeignItem<$tcx>,
32+
[] impl_item_ref: rustc_hir::ImplItemRef<$tcx>,
33+
[few] inline_asm: rustc_hir::InlineAsm<$tcx>,
34+
[few] llvm_inline_asm: rustc_hir::LlvmInlineAsm<$tcx>,
35+
[] local: rustc_hir::Local<$tcx>,
36+
[few] macro_def: rustc_hir::MacroDef<$tcx>,
37+
[] param: rustc_hir::Param<$tcx>,
38+
[] pat: rustc_hir::Pat<$tcx>,
39+
[] path: rustc_hir::Path<$tcx>,
40+
[] path_segment: rustc_hir::PathSegment<$tcx>,
41+
[] poly_trait_ref: rustc_hir::PolyTraitRef<$tcx>,
42+
[] qpath: rustc_hir::QPath<$tcx>,
43+
[] stmt: rustc_hir::Stmt<$tcx>,
44+
[] struct_field: rustc_hir::StructField<$tcx>,
45+
[] trait_item_ref: rustc_hir::TraitItemRef,
46+
[] ty: rustc_hir::Ty<$tcx>,
47+
[] type_binding: rustc_hir::TypeBinding<$tcx>,
48+
[] variant: rustc_hir::Variant<$tcx>,
49+
[] where_predicate: rustc_hir::WherePredicate<$tcx>,
5050
], $tcx);
5151
)
5252
}

src/librustc_middle/arena.rs

Lines changed: 28 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -11,141 +11,98 @@
1111
macro_rules! arena_types {
1212
($macro:path, $args:tt, $tcx:lifetime) => (
1313
$macro!($args, [
14-
[] layouts: rustc_target::abi::Layout, rustc_target::abi::Layout;
14+
[] layouts: rustc_target::abi::Layout,
1515
// AdtDef are interned and compared by address
16-
[] adt_def: rustc_middle::ty::AdtDef, rustc_middle::ty::AdtDef;
17-
[] steal_mir:
18-
rustc_middle::ty::steal::Steal<rustc_middle::mir::Body<$tcx>>,
19-
rustc_middle::ty::steal::Steal<rustc_middle::mir::Body<$tcx>>;
20-
[decode] mir: rustc_middle::mir::Body<$tcx>, rustc_middle::mir::Body<'_x>;
16+
[] adt_def: rustc_middle::ty::AdtDef,
17+
[] steal_mir: rustc_middle::ty::steal::Steal<rustc_middle::mir::Body<$tcx>>,
18+
[decode] mir: rustc_middle::mir::Body<$tcx>,
2119
[] steal_promoted:
2220
rustc_middle::ty::steal::Steal<
2321
rustc_index::vec::IndexVec<
2422
rustc_middle::mir::Promoted,
2523
rustc_middle::mir::Body<$tcx>
2624
>
2725
>,
28-
rustc_middle::ty::steal::Steal<
29-
rustc_index::vec::IndexVec<
30-
rustc_middle::mir::Promoted,
31-
rustc_middle::mir::Body<$tcx>
32-
>
33-
>;
3426
[decode] promoted:
3527
rustc_index::vec::IndexVec<
3628
rustc_middle::mir::Promoted,
3729
rustc_middle::mir::Body<$tcx>
3830
>,
39-
rustc_index::vec::IndexVec<
40-
rustc_middle::mir::Promoted,
41-
rustc_middle::mir::Body<'_x>
42-
>;
43-
[decode] typeck_results: rustc_middle::ty::TypeckResults<$tcx>, rustc_middle::ty::TypeckResults<'_x>;
31+
[decode] typeck_results: rustc_middle::ty::TypeckResults<$tcx>,
4432
[decode] borrowck_result:
4533
rustc_middle::mir::BorrowCheckResult<$tcx>,
46-
rustc_middle::mir::BorrowCheckResult<'_x>;
47-
[decode] unsafety_check_result: rustc_middle::mir::UnsafetyCheckResult, rustc_middle::mir::UnsafetyCheckResult;
48-
[] const_allocs: rustc_middle::mir::interpret::Allocation, rustc_middle::mir::interpret::Allocation;
34+
[decode] unsafety_check_result: rustc_middle::mir::UnsafetyCheckResult,
35+
[] const_allocs: rustc_middle::mir::interpret::Allocation,
4936
// Required for the incremental on-disk cache
50-
[few] mir_keys: rustc_hir::def_id::DefIdSet, rustc_hir::def_id::DefIdSet;
51-
[] region_scope_tree: rustc_middle::middle::region::ScopeTree, rustc_middle::middle::region::ScopeTree;
37+
[few] mir_keys: rustc_hir::def_id::DefIdSet,
38+
[] region_scope_tree: rustc_middle::middle::region::ScopeTree,
5239
[] dropck_outlives:
5340
rustc_middle::infer::canonical::Canonical<'tcx,
5441
rustc_middle::infer::canonical::QueryResponse<'tcx,
5542
rustc_middle::traits::query::DropckOutlivesResult<'tcx>
5643
>
5744
>,
58-
rustc_middle::infer::canonical::Canonical<'_x,
59-
rustc_middle::infer::canonical::QueryResponse<'_y,
60-
rustc_middle::traits::query::DropckOutlivesResult<'_z>
61-
>
62-
>;
6345
[] normalize_projection_ty:
6446
rustc_middle::infer::canonical::Canonical<'tcx,
6547
rustc_middle::infer::canonical::QueryResponse<'tcx,
6648
rustc_middle::traits::query::NormalizationResult<'tcx>
6749
>
6850
>,
69-
rustc_middle::infer::canonical::Canonical<'_x,
70-
rustc_middle::infer::canonical::QueryResponse<'_y,
71-
rustc_middle::traits::query::NormalizationResult<'_z>
72-
>
73-
>;
7451
[] implied_outlives_bounds:
7552
rustc_middle::infer::canonical::Canonical<'tcx,
7653
rustc_middle::infer::canonical::QueryResponse<'tcx,
7754
Vec<rustc_middle::traits::query::OutlivesBound<'tcx>>
7855
>
7956
>,
80-
rustc_middle::infer::canonical::Canonical<'_x,
81-
rustc_middle::infer::canonical::QueryResponse<'_y,
82-
Vec<rustc_middle::traits::query::OutlivesBound<'_z>>
83-
>
84-
>;
8557
[] type_op_subtype:
8658
rustc_middle::infer::canonical::Canonical<'tcx,
8759
rustc_middle::infer::canonical::QueryResponse<'tcx, ()>
8860
>,
89-
rustc_middle::infer::canonical::Canonical<'_x,
90-
rustc_middle::infer::canonical::QueryResponse<'_y, ()>
91-
>;
9261
[] type_op_normalize_poly_fn_sig:
9362
rustc_middle::infer::canonical::Canonical<'tcx,
9463
rustc_middle::infer::canonical::QueryResponse<'tcx, rustc_middle::ty::PolyFnSig<'tcx>>
9564
>,
96-
rustc_middle::infer::canonical::Canonical<'_x,
97-
rustc_middle::infer::canonical::QueryResponse<'_y, rustc_middle::ty::PolyFnSig<'_z>>
98-
>;
9965
[] type_op_normalize_fn_sig:
10066
rustc_middle::infer::canonical::Canonical<'tcx,
10167
rustc_middle::infer::canonical::QueryResponse<'tcx, rustc_middle::ty::FnSig<'tcx>>
10268
>,
103-
rustc_middle::infer::canonical::Canonical<'_x,
104-
rustc_middle::infer::canonical::QueryResponse<'_y, rustc_middle::ty::FnSig<'_z>>
105-
>;
10669
[] type_op_normalize_predicate:
10770
rustc_middle::infer::canonical::Canonical<'tcx,
10871
rustc_middle::infer::canonical::QueryResponse<'tcx, rustc_middle::ty::Predicate<'tcx>>
10972
>,
110-
rustc_middle::infer::canonical::Canonical<'_x,
111-
rustc_middle::infer::canonical::QueryResponse<'_y, rustc_middle::ty::Predicate<'_z>>
112-
>;
11373
[] type_op_normalize_ty:
11474
rustc_middle::infer::canonical::Canonical<'tcx,
11575
rustc_middle::infer::canonical::QueryResponse<'tcx, rustc_middle::ty::Ty<'tcx>>
11676
>,
117-
rustc_middle::infer::canonical::Canonical<'_x,
118-
rustc_middle::infer::canonical::QueryResponse<'_y, &'_z rustc_middle::ty::TyS<'_w>>
119-
>;
120-
[few] all_traits: Vec<rustc_hir::def_id::DefId>, Vec<rustc_hir::def_id::DefId>;
121-
[few] privacy_access_levels: rustc_middle::middle::privacy::AccessLevels, rustc_middle::middle::privacy::AccessLevels;
122-
[few] foreign_module: rustc_middle::middle::cstore::ForeignModule, rustc_middle::middle::cstore::ForeignModule;
123-
[few] foreign_modules: Vec<rustc_middle::middle::cstore::ForeignModule>, Vec<rustc_middle::middle::cstore::ForeignModule>;
124-
[] upvars_mentioned: rustc_data_structures::fx::FxIndexMap<rustc_hir::HirId, rustc_hir::Upvar>, rustc_data_structures::fx::FxIndexMap<rustc_hir::HirId, rustc_hir::Upvar>;
125-
[] object_safety_violations: rustc_middle::traits::ObjectSafetyViolation, rustc_middle::traits::ObjectSafetyViolation;
126-
[] codegen_unit: rustc_middle::mir::mono::CodegenUnit<$tcx>, rustc_middle::mir::mono::CodegenUnit<'_x>;
127-
[] attribute: rustc_ast::ast::Attribute, rustc_ast::ast::Attribute;
128-
[] name_set: rustc_data_structures::fx::FxHashSet<rustc_span::symbol::Symbol>, rustc_data_structures::fx::FxHashSet<rustc_span::symbol::Symbol>;
129-
[] hir_id_set: rustc_hir::HirIdSet, rustc_hir::HirIdSet;
77+
[few] all_traits: Vec<rustc_hir::def_id::DefId>,
78+
[few] privacy_access_levels: rustc_middle::middle::privacy::AccessLevels,
79+
[few] foreign_module: rustc_middle::middle::cstore::ForeignModule,
80+
[few] foreign_modules: Vec<rustc_middle::middle::cstore::ForeignModule>,
81+
[] upvars_mentioned: rustc_data_structures::fx::FxIndexMap<rustc_hir::HirId, rustc_hir::Upvar>,
82+
[] object_safety_violations: rustc_middle::traits::ObjectSafetyViolation,
83+
[] codegen_unit: rustc_middle::mir::mono::CodegenUnit<$tcx>,
84+
[] attribute: rustc_ast::ast::Attribute,
85+
[] name_set: rustc_data_structures::fx::FxHashSet<rustc_span::symbol::Symbol>,
86+
[] hir_id_set: rustc_hir::HirIdSet,
13087

13188
// Interned types
132-
[] tys: rustc_middle::ty::TyS<$tcx>, rustc_middle::ty::TyS<'_x>;
133-
[] predicates: rustc_middle::ty::PredicateInner<$tcx>, rustc_middle::ty::PredicateInner<'_x>;
89+
[] tys: rustc_middle::ty::TyS<$tcx>,
90+
[] predicates: rustc_middle::ty::PredicateInner<$tcx>,
13491

13592
// HIR query types
136-
[few] indexed_hir: rustc_middle::hir::map::IndexedHir<$tcx>, rustc_middle::hir::map::IndexedHir<'_x>;
137-
[few] hir_definitions: rustc_hir::definitions::Definitions, rustc_hir::definitions::Definitions;
138-
[] hir_owner: rustc_middle::hir::Owner<$tcx>, rustc_middle::hir::Owner<'_x>;
139-
[] hir_owner_nodes: rustc_middle::hir::OwnerNodes<$tcx>, rustc_middle::hir::OwnerNodes<'_x>;
93+
[few] indexed_hir: rustc_middle::hir::map::IndexedHir<$tcx>,
94+
[few] hir_definitions: rustc_hir::definitions::Definitions,
95+
[] hir_owner: rustc_middle::hir::Owner<$tcx>,
96+
[] hir_owner_nodes: rustc_middle::hir::OwnerNodes<$tcx>,
14097

14198
// Note that this deliberately duplicates items in the `rustc_hir::arena`,
14299
// since we need to allocate this type on both the `rustc_hir` arena
143100
// (during lowering) and the `librustc_middle` arena (for decoding MIR)
144-
[decode] asm_template: rustc_ast::ast::InlineAsmTemplatePiece, rustc_ast::ast::InlineAsmTemplatePiece;
101+
[decode] asm_template: rustc_ast::ast::InlineAsmTemplatePiece,
145102

146103
// This is used to decode the &'tcx [Span] for InlineAsm's line_spans.
147-
[decode] span: rustc_span::Span, rustc_span::Span;
148-
[decode] used_trait_imports: rustc_data_structures::fx::FxHashSet<rustc_hir::def_id::LocalDefId>, rustc_data_structures::fx::FxHashSet<rustc_hir::def_id::LocalDefId>;
104+
[decode] span: rustc_span::Span,
105+
[decode] used_trait_imports: rustc_data_structures::fx::FxHashSet<rustc_hir::def_id::LocalDefId>,
149106
], $tcx);
150107
)
151108
}

src/librustc_middle/ty/codec.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ macro_rules! impl_arena_allocatable_decoder {
390390
}
391391

392392
macro_rules! impl_arena_allocatable_decoders {
393-
([], [$($a:tt $name:ident: $ty:ty, $_gen_ty:ty;)*], $tcx:lifetime) => {
393+
([], [$($a:tt $name:ident: $ty:ty,)*], $tcx:lifetime) => {
394394
$(
395395
impl_arena_allocatable_decoder!($a [[$name: $ty], $tcx]);
396396
)*

0 commit comments

Comments
 (0)