From 2a7fc227a67a4d3abcc0f7a738c2fa419754840b Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Wed, 10 Oct 2018 17:28:33 -0400 Subject: introduce `FnDef` and `AdtDef` to `UserTypeAnnotation` --- src/librustc/ich/impls_mir.rs | 8 ++++++++ src/librustc/mir/mod.rs | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src/librustc') 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> 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), } } -- cgit 1.4.1-3-g733a5