diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/arena.rs | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/librustc/arena.rs b/src/librustc/arena.rs index 2f73566920d..897a587fce8 100644 --- a/src/librustc/arena.rs +++ b/src/librustc/arena.rs @@ -187,6 +187,16 @@ macro_rules! declare_arena { drop: DropArena, $($name: arena_for_type!($a[$ty]),)* } + + $( + impl ArenaAllocatable for $ty {} + unsafe impl<$tcx> ArenaField<$tcx> for $ty { + #[inline] + fn arena<'a>(_arena: &'a Arena<$tcx>) -> Option<&'a TypedArena<Self>> { + which_arena_for_type!($a[&_arena.$name]) + } + } + )* } } @@ -202,24 +212,8 @@ macro_rules! which_arena_for_type { }; } -macro_rules! impl_arena_allocatable { - ([], [$($a:tt $name:ident: $ty:ty,)*], $tcx:lifetime) => { - $( - impl ArenaAllocatable for $ty {} - unsafe impl<$tcx> ArenaField<$tcx> for $ty { - #[inline] - fn arena<'a>(_arena: &'a Arena<$tcx>) -> Option<&'a TypedArena<Self>> { - which_arena_for_type!($a[&_arena.$name]) - } - } - )* - } -} - arena_types!(declare_arena, [], 'tcx); -arena_types!(impl_arena_allocatable, [], 'tcx); - #[marker] pub trait ArenaAllocatable {} |
