@@ -636,7 +636,7 @@ impl rustc_errors::IntoDiagnosticArg for Predicate<'_> {
636
636
}
637
637
638
638
#[ derive( Clone , Copy , PartialEq , Eq , Hash , TyEncodable , TyDecodable ) ]
639
- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
639
+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
640
640
pub enum PredicateKind < ' tcx > {
641
641
/// Corresponds to `where Foo: Bar<A, B, C>`. `Foo` here would be
642
642
/// the `Self` type of the trait reference and `A`, `B`, and `C`
@@ -808,7 +808,7 @@ impl<'tcx> Predicate<'tcx> {
808
808
}
809
809
810
810
#[ derive( Clone , Copy , PartialEq , Eq , Hash , TyEncodable , TyDecodable ) ]
811
- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
811
+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
812
812
pub struct TraitPredicate < ' tcx > {
813
813
pub trait_ref : TraitRef < ' tcx > ,
814
814
@@ -888,7 +888,7 @@ impl<'tcx> PolyTraitPredicate<'tcx> {
888
888
}
889
889
890
890
#[ derive( Clone , Copy , PartialEq , Eq , PartialOrd , Ord , Hash , Debug , TyEncodable , TyDecodable ) ]
891
- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
891
+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
892
892
pub struct OutlivesPredicate < A , B > ( pub A , pub B ) ; // `A: B`
893
893
pub type RegionOutlivesPredicate < ' tcx > = OutlivesPredicate < ty:: Region < ' tcx > , ty:: Region < ' tcx > > ;
894
894
pub type TypeOutlivesPredicate < ' tcx > = OutlivesPredicate < Ty < ' tcx > , ty:: Region < ' tcx > > ;
@@ -899,7 +899,7 @@ pub type PolyTypeOutlivesPredicate<'tcx> = ty::Binder<'tcx, TypeOutlivesPredicat
899
899
/// whether the `a` type is the type that we should label as "expected" when
900
900
/// presenting user diagnostics.
901
901
#[ derive( Clone , Copy , PartialEq , Eq , Hash , Debug , TyEncodable , TyDecodable ) ]
902
- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
902
+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
903
903
pub struct SubtypePredicate < ' tcx > {
904
904
pub a_is_expected : bool ,
905
905
pub a : Ty < ' tcx > ,
@@ -909,7 +909,7 @@ pub type PolySubtypePredicate<'tcx> = ty::Binder<'tcx, SubtypePredicate<'tcx>>;
909
909
910
910
/// Encodes that we have to coerce *from* the `a` type to the `b` type.
911
911
#[ derive( Clone , Copy , PartialEq , Eq , Hash , Debug , TyEncodable , TyDecodable ) ]
912
- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
912
+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
913
913
pub struct CoercePredicate < ' tcx > {
914
914
pub a : Ty < ' tcx > ,
915
915
pub b : Ty < ' tcx > ,
@@ -1058,7 +1058,7 @@ impl<'tcx> TermKind<'tcx> {
1058
1058
/// Form #2 eventually yields one of these `ProjectionPredicate`
1059
1059
/// instances to normalize the LHS.
1060
1060
#[ derive( Copy , Clone , PartialEq , Eq , Hash , TyEncodable , TyDecodable ) ]
1061
- #[ derive( HashStable , TypeFoldable , TypeVisitable ) ]
1061
+ #[ derive( HashStable , TypeFoldable , TypeVisitable , Lift ) ]
1062
1062
pub struct ProjectionPredicate < ' tcx > {
1063
1063
pub projection_ty : ProjectionTy < ' tcx > ,
1064
1064
pub term : Term < ' tcx > ,
@@ -1692,7 +1692,7 @@ impl<'tcx> PolyTraitRef<'tcx> {
1692
1692
}
1693
1693
1694
1694
#[ derive( Copy , Clone , Debug , PartialEq , Eq , Hash , TypeFoldable , TypeVisitable ) ]
1695
- #[ derive( HashStable ) ]
1695
+ #[ derive( HashStable , Lift ) ]
1696
1696
pub struct ParamEnvAnd < ' tcx , T > {
1697
1697
pub param_env : ParamEnv < ' tcx > ,
1698
1698
pub value : T ,
0 commit comments