Deny const variables as well
This commit is contained in:
parent
1e2eb97c6e
commit
6b0ef9c810
@ -5,6 +5,7 @@
|
||||
use crate::ty::subst::{InternalSubsts, SubstsRef};
|
||||
use crate::ty::ParamEnv;
|
||||
use crate::ty::{self, TyCtxt, TypeVisitable};
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
use rustc_errors::ErrorGuaranteed;
|
||||
use rustc_hir::def_id::DefId;
|
||||
use rustc_macros::HashStable;
|
||||
@ -108,7 +109,6 @@ pub fn try_to_machine_usize(self, tcx: TyCtxt<'tcx>) -> Option<u64> {
|
||||
|
||||
/// An inference variable for a const, for use in const generics.
|
||||
#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord, TyEncodable, TyDecodable, Hash)]
|
||||
#[derive(HashStable)]
|
||||
pub enum InferConst<'tcx> {
|
||||
/// Infer the value of the const.
|
||||
Var(ty::ConstVid<'tcx>),
|
||||
@ -116,6 +116,15 @@ pub enum InferConst<'tcx> {
|
||||
Fresh(u32),
|
||||
}
|
||||
|
||||
impl<CTX> HashStable<CTX> for InferConst<'_> {
|
||||
fn hash_stable(&self, hcx: &mut CTX, hasher: &mut StableHasher) {
|
||||
match self {
|
||||
InferConst::Var(_) => panic!("const variables should not be hashed: {self:?}"),
|
||||
InferConst::Fresh(i) => i.hash_stable(hcx, hasher),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum EvalMode {
|
||||
Typeck,
|
||||
Mir,
|
||||
|
@ -200,9 +200,7 @@ fn intern_ty(
|
||||
|
||||
// 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 | TypeFlags::HAS_TY_INFER)
|
||||
let stable_hash = if flags.flags.intersects(TypeFlags::NEEDS_INFER)
|
||||
|| sess.opts.incremental.is_none()
|
||||
{
|
||||
Fingerprint::ZERO
|
||||
|
@ -676,7 +676,7 @@ fn hash_stable(&self, ctx: &mut CTX, hasher: &mut StableHasher) {
|
||||
discriminant(self).hash_stable(ctx, hasher);
|
||||
match self {
|
||||
TyVar(_) | IntVar(_) | FloatVar(_) => {
|
||||
panic!("inference variables should not be hashed: {self:?}")
|
||||
panic!("type variables should not be hashed: {self:?}")
|
||||
}
|
||||
FreshTy(v) | FreshIntTy(v) | FreshFloatTy(v) => v.hash_stable(ctx, hasher),
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user