diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2018-10-10 17:28:33 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2018-10-15 16:24:46 -0400 |
| commit | 2a7fc227a67a4d3abcc0f7a738c2fa419754840b (patch) | |
| tree | 3b3fc978c60382c8f395b5ef1e297ecf96f8c890 /src/librustc | |
| parent | aed6e4a0834d11cad0bf5e1ebe065eabff1f405c (diff) | |
| download | rust-2a7fc227a67a4d3abcc0f7a738c2fa419754840b.tar.gz rust-2a7fc227a67a4d3abcc0f7a738c2fa419754840b.zip | |
introduce `FnDef` and `AdtDef` to `UserTypeAnnotation`
Diffstat (limited to 'src/librustc')
| -rw-r--r-- | src/librustc/ich/impls_mir.rs | 8 | ||||
| -rw-r--r-- | src/librustc/mir/mod.rs | 6 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/librustc/ich/impls_mir.rs b/src/librustc/ich/impls_mir.rs index 38a298d81dd..b660187945c 100644 --- a/src/librustc/ich/impls_mir.rs +++ b/src/librustc/ich/impls_mir.rs @@ -597,6 +597,14 @@ impl<'a, 'gcx> HashStable<StableHashingContext<'a>> for mir::UserTypeAnnotation< mir::UserTypeAnnotation::Ty(ref ty) => { ty.hash_stable(hcx, hasher); } + mir::UserTypeAnnotation::FnDef(ref def_id, ref substs) => { + def_id.hash_stable(hcx, hasher); + substs.hash_stable(hcx, hasher); + } + mir::UserTypeAnnotation::AdtDef(ref def_id, ref substs) => { + def_id.hash_stable(hcx, hasher); + substs.hash_stable(hcx, hasher); + } } } } diff --git a/src/librustc/mir/mod.rs b/src/librustc/mir/mod.rs index eb4aa7ece49..278a9bba178 100644 --- a/src/librustc/mir/mod.rs +++ b/src/librustc/mir/mod.rs @@ -37,7 +37,7 @@ use syntax::ast::{self, Name}; use syntax::symbol::InternedString; use syntax_pos::{Span, DUMMY_SP}; use ty::fold::{TypeFoldable, TypeFolder, TypeVisitor}; -use ty::subst::{Subst, Substs}; +use ty::subst::{CanonicalSubsts, Subst, Substs}; use ty::{self, AdtDef, CanonicalTy, ClosureSubsts, GeneratorSubsts, Region, Ty, TyCtxt}; use util::ppaux; @@ -2413,11 +2413,15 @@ pub struct Constant<'tcx> { #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, RustcEncodable, RustcDecodable)] pub enum UserTypeAnnotation<'tcx> { Ty(CanonicalTy<'tcx>), + FnDef(DefId, CanonicalSubsts<'tcx>), + AdtDef(&'tcx AdtDef, CanonicalSubsts<'tcx>), } EnumTypeFoldableImpl! { impl<'tcx> TypeFoldable<'tcx> for UserTypeAnnotation<'tcx> { (UserTypeAnnotation::Ty)(ty), + (UserTypeAnnotation::FnDef)(def, substs), + (UserTypeAnnotation::AdtDef)(def, substs), } } |
