From 274169090214a37ea17ec21ae6241733de1ff2e9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?John=20K=C3=A5re=20Alsaker?= Date: Fri, 13 Apr 2018 19:33:21 +0200 Subject: [PATCH] Tweaks to intern_ty --- src/librustc/ty/context.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index fea01725769..4c7d8d7f44e 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -173,10 +173,10 @@ fn intern_ty(&self, st: TypeVariants<'tcx>, return ty; } let global_interner = global_interners.map(|interners| { - interners.type_.borrow_mut() + (interners.type_.borrow_mut(), &interners.arena) }); - if let Some(ref interner) = global_interner { - if let Some(&Interned(ty)) = interner.get(&st) { + if let Some((ref type_, _)) = global_interner { + if let Some(&Interned(ty)) = type_.get(&st) { return ty; } } @@ -192,18 +192,18 @@ fn intern_ty(&self, st: TypeVariants<'tcx>, // determine that all contents are in the global tcx. // See comments on Lift for why we can't use that. if !flags.flags.intersects(ty::TypeFlags::KEEP_IN_LOCAL_TCX) { - if let Some(interner) = global_interners { + if let Some((mut type_, arena)) = global_interner { let ty_struct: TyS<'gcx> = unsafe { mem::transmute(ty_struct) }; - let ty: Ty<'gcx> = interner.arena.alloc(ty_struct); - global_interner.unwrap().insert(Interned(ty)); + let ty: Ty<'gcx> = arena.alloc(ty_struct); + type_.insert(Interned(ty)); return ty; } } else { // Make sure we don't end up with inference // types/regions in the global tcx. - if global_interners.is_none() { + if global_interner.is_none() { drop(interner); bug!("Attempted to intern `{:?}` which contains \ inference types/regions in the global type context", -- 2.44.0