diff --git a/Cargo.lock b/Cargo.lock index 7c074fb18a6f..54a54f1a0c26 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3819,6 +3819,7 @@ dependencies = [ "log", "rustc", "rustc_data_structures", + "rustc_macros", "rustc_target", "smallvec 1.0.0", "syntax", diff --git a/src/librustc_traits/Cargo.toml b/src/librustc_traits/Cargo.toml index a9b184a7b306..fab177139dc1 100644 --- a/src/librustc_traits/Cargo.toml +++ b/src/librustc_traits/Cargo.toml @@ -12,6 +12,7 @@ path = "lib.rs" log = { version = "0.4" } rustc = { path = "../librustc" } rustc_data_structures = { path = "../librustc_data_structures" } +rustc_macros = { path = "../librustc_macros" } rustc_target = { path = "../librustc_target" } syntax = { path = "../libsyntax" } syntax_pos = { path = "../libsyntax_pos" } diff --git a/src/librustc_traits/chalk_context/mod.rs b/src/librustc_traits/chalk_context/mod.rs index 8d136a1b65c7..84d2271020f5 100644 --- a/src/librustc_traits/chalk_context/mod.rs +++ b/src/librustc_traits/chalk_context/mod.rs @@ -39,6 +39,7 @@ use rustc::ty::subst::{GenericArg, GenericArgKind}; use rustc::mir::interpret::ConstValue; use syntax_pos::DUMMY_SP; +use rustc_macros::TypeFoldable; use std::fmt::{self, Debug}; use std::marker::PhantomData; @@ -66,18 +67,12 @@ crate type RegionConstraint<'tcx> = ty::OutlivesPredicate, ty::Region<'tcx>>; -#[derive(Clone, Debug, PartialEq, Eq, Hash)] +#[derive(Clone, Debug, PartialEq, Eq, Hash, TypeFoldable)] crate struct ConstrainedSubst<'tcx> { subst: CanonicalVarValues<'tcx>, constraints: Vec>, } -BraceStructTypeFoldableImpl! { - impl<'tcx> TypeFoldable<'tcx> for ConstrainedSubst<'tcx> { - subst, constraints - } -} - impl context::Context for ChalkArenas<'tcx> { type CanonicalExClause = Canonical<'tcx, ChalkExClause<'tcx>>;