@@ -636,7 +636,7 @@ impl rustc_errors::IntoDiagnosticArg for Predicate<'_> {
636636}
637637
638638#[ derive( Clone , Copy , PartialEq , Eq , Hash , TyEncodable , TyDecodable ) ]
639- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
639+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
640640pub enum PredicateKind < ' tcx > {
641641 /// Corresponds to `where Foo: Bar<A, B, C>`. `Foo` here would be
642642 /// the `Self` type of the trait reference and `A`, `B`, and `C`
@@ -808,7 +808,7 @@ impl<'tcx> Predicate<'tcx> {
808808}
809809
810810#[ derive( Clone , Copy , PartialEq , Eq , Hash , TyEncodable , TyDecodable ) ]
811- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
811+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
812812pub struct TraitPredicate < ' tcx > {
813813 pub trait_ref : TraitRef < ' tcx > ,
814814
@@ -888,7 +888,7 @@ impl<'tcx> PolyTraitPredicate<'tcx> {
888888}
889889
890890#[ derive( Clone , Copy , PartialEq , Eq , PartialOrd , Ord , Hash , Debug , TyEncodable , TyDecodable ) ]
891- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
891+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
892892pub struct OutlivesPredicate < A , B > ( pub A , pub B ) ; // `A: B`
893893pub type RegionOutlivesPredicate < ' tcx > = OutlivesPredicate < ty:: Region < ' tcx > , ty:: Region < ' tcx > > ;
894894pub type TypeOutlivesPredicate < ' tcx > = OutlivesPredicate < Ty < ' tcx > , ty:: Region < ' tcx > > ;
@@ -899,7 +899,7 @@ pub type PolyTypeOutlivesPredicate<'tcx> = ty::Binder<'tcx, TypeOutlivesPredicat
899899/// whether the `a` type is the type that we should label as "expected" when
900900/// presenting user diagnostics.
901901#[ derive( Clone , Copy , PartialEq , Eq , Hash , Debug , TyEncodable , TyDecodable ) ]
902- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
902+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
903903pub struct SubtypePredicate < ' tcx > {
904904 pub a_is_expected : bool ,
905905 pub a : Ty < ' tcx > ,
@@ -909,7 +909,7 @@ pub type PolySubtypePredicate<'tcx> = ty::Binder<'tcx, SubtypePredicate<'tcx>>;
909909
910910/// Encodes that we have to coerce *from* the `a` type to the `b` type.
911911#[ derive( Clone , Copy , PartialEq , Eq , Hash , Debug , TyEncodable , TyDecodable ) ]
912- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
912+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
913913pub struct CoercePredicate < ' tcx > {
914914 pub a : Ty < ' tcx > ,
915915 pub b : Ty < ' tcx > ,
@@ -1058,7 +1058,7 @@ impl<'tcx> TermKind<'tcx> {
10581058/// Form #2 eventually yields one of these `ProjectionPredicate`
10591059/// instances to normalize the LHS.
10601060#[ derive( Copy , Clone , PartialEq , Eq , Hash , TyEncodable , TyDecodable ) ]
1061- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
1061+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
10621062pub struct ProjectionPredicate < ' tcx > {
10631063 pub projection_ty : ProjectionTy < ' tcx > ,
10641064 pub term : Term < ' tcx > ,
@@ -1692,7 +1692,7 @@ impl<'tcx> PolyTraitRef<'tcx> {
16921692}
16931693
16941694#[ derive( Copy , Clone , Debug , PartialEq , Eq , Hash , TypeFoldable , TypeVisitable ) ]
1695- #[ derive( HashStable ) ]
1695+ #[ derive( HashStable , Lift ) ]
16961696pub struct ParamEnvAnd < ' tcx , T > {
16971697 pub param_env : ParamEnv < ' tcx > ,
16981698 pub value : T ,
0 commit comments