diff options
| author | varkor <github@varkor.com> | 2019-02-20 01:13:49 +0000 |
|---|---|---|
| committer | varkor <github@varkor.com> | 2019-03-05 22:09:31 +0000 |
| commit | 9a9aa5b46aa0c81a6dad3a3377d6b7d2e65a93c7 (patch) | |
| tree | 8a6f06792fe22e68f08696442deb07f7834eceb4 | |
| parent | 73a6df6079c052f789ef8d5e0aaaf855ffbc76f4 (diff) | |
| download | rust-9a9aa5b46aa0c81a6dad3a3377d6b7d2e65a93c7.tar.gz rust-9a9aa5b46aa0c81a6dad3a3377d6b7d2e65a93c7.zip | |
Implement Hash for new types
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
| -rw-r--r-- | src/librustc/ich/impls_ty.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/librustc/ich/impls_ty.rs b/src/librustc/ich/impls_ty.rs index f77a88128f2..21988de9018 100644 --- a/src/librustc/ich/impls_ty.rs +++ b/src/librustc/ich/impls_ty.rs @@ -74,6 +74,7 @@ for ty::subst::UnpackedKind<'gcx> { match self { ty::subst::UnpackedKind::Lifetime(lt) => lt.hash_stable(hcx, hasher), ty::subst::UnpackedKind::Type(ty) => ty.hash_stable(hcx, hasher), + ty::subst::UnpackedKind::Const(ct) => ct.hash_stable(hcx, hasher), } } } @@ -134,6 +135,15 @@ impl<'a> HashStable<StableHashingContext<'a>> for ty::RegionVid { } } +impl<'gcx, 'tcx> HashStable<StableHashingContext<'gcx>> for ty::ConstVid<'tcx> { + #[inline] + fn hash_stable<W: StableHasherResult>(&self, + hcx: &mut StableHashingContext<'gcx>, + hasher: &mut StableHasher<W>) { + self.index.hash_stable(hcx, hasher); + } +} + impl<'gcx> HashStable<StableHashingContext<'gcx>> for ty::BoundVar { #[inline] fn hash_stable<W: StableHasherResult>(&self, @@ -297,6 +307,14 @@ impl<'a> HashStable<StableHashingContext<'a>> for ty::VariantFlags { } } +impl_stable_hash_for!( + impl<'tcx> for enum ty::InferConst<'tcx> [ ty::InferConst ] { + Var(vid), + Fresh(i), + Canonical(debruijn, var), + } +); + impl_stable_hash_for!(enum ty::VariantDiscr { Explicit(def_id), Relative(distance) @@ -310,11 +328,14 @@ impl_stable_hash_for!(struct ty::FieldDef { impl_stable_hash_for!( impl<'tcx> for enum mir::interpret::ConstValue<'tcx> [ mir::interpret::ConstValue ] { + Param(param), + Infer(infer), Scalar(val), Slice(a, b), ByRef(ptr, alloc), } ); + impl_stable_hash_for!(struct crate::mir::interpret::RawConst<'tcx> { alloc_id, ty, @@ -518,6 +539,7 @@ impl_stable_hash_for!(struct ty::GenericParamDef { impl_stable_hash_for!(enum ty::GenericParamDefKind { Lifetime, Type { has_default, object_lifetime_default, synthetic }, + Const, }); impl_stable_hash_for!( @@ -736,6 +758,11 @@ for ty::FloatVid } } +impl_stable_hash_for!(struct ty::ParamConst { + index, + name +}); + impl_stable_hash_for!(struct ty::ParamTy { idx, name |
