From 91af4f5d0b9ae9a2f8adafc02d61d18c60ddb200 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Wed, 19 Oct 2022 00:19:28 +0000 Subject: [PATCH] Don't hash non-fresh Ty::Infer or RegionKind::Infer --- compiler/rustc_middle/src/ty/context.rs | 6 ++++-- compiler/rustc_type_ir/src/lib.rs | 6 +++--- compiler/rustc_type_ir/src/sty.rs | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs index 8636c4465d4..b4971ce6ae5 100644 --- a/compiler/rustc_middle/src/ty/context.rs +++ b/compiler/rustc_middle/src/ty/context.rs @@ -198,9 +198,11 @@ impl<'tcx> CtxtInterners<'tcx> { .intern(kind, |kind| { let flags = super::flags::FlagComputation::for_kind(&kind); - // It's impossible to hash inference regions (and will ICE), so we don't need to try to cache them. + // It's impossible to hash inference variables (and will ICE), so we don't need to try to cache them. // Without incremental, we rarely stable-hash types, so let's not do it proactively. - let stable_hash = if flags.flags.intersects(TypeFlags::HAS_RE_INFER) + let stable_hash = if flags + .flags + .intersects(TypeFlags::HAS_RE_INFER | TypeFlags::HAS_TY_INFER) || sess.opts.incremental.is_none() { Fingerprint::ZERO diff --git a/compiler/rustc_type_ir/src/lib.rs b/compiler/rustc_type_ir/src/lib.rs index da30344ef7e..c950e4e500c 100644 --- a/compiler/rustc_type_ir/src/lib.rs +++ b/compiler/rustc_type_ir/src/lib.rs @@ -675,9 +675,9 @@ impl HashStable for InferTy { use InferTy::*; discriminant(self).hash_stable(ctx, hasher); match self { - TyVar(v) => v.as_u32().hash_stable(ctx, hasher), - IntVar(v) => v.index.hash_stable(ctx, hasher), - FloatVar(v) => v.index.hash_stable(ctx, hasher), + TyVar(_) | IntVar(_) | FloatVar(_) => { + panic!("inference variables should not be hashed: {self:?}") + } FreshTy(v) | FreshIntTy(v) | FreshFloatTy(v) => v.hash_stable(ctx, hasher), } } diff --git a/compiler/rustc_type_ir/src/sty.rs b/compiler/rustc_type_ir/src/sty.rs index 6d54924e515..a4fb1480fa4 100644 --- a/compiler/rustc_type_ir/src/sty.rs +++ b/compiler/rustc_type_ir/src/sty.rs @@ -1332,8 +1332,8 @@ where RePlaceholder(p) => { p.hash_stable(hcx, hasher); } - ReVar(reg) => { - reg.hash_stable(hcx, hasher); + ReVar(_) => { + panic!("region variables should not be hashed: {self:?}") } } }