@@ -566,6 +566,11 @@ impl rustc_errors::IntoDiagnosticArg for Clause<'_> {
566566pub struct Clause < ' tcx > ( Interned < ' tcx , WithCachedTypeInfo < ty:: Binder < ' tcx , PredicateKind < ' tcx > > > > ) ;
567567
568568impl < ' tcx > Clause < ' tcx > {
569+ pub fn from_projection_clause ( tcx : TyCtxt < ' tcx > , pred : PolyProjectionPredicate < ' tcx > ) -> Self {
570+ let pred: Predicate < ' tcx > = pred. to_predicate ( tcx) ;
571+ pred. expect_clause ( )
572+ }
573+
569574 pub fn as_predicate ( self ) -> Predicate < ' tcx > {
570575 Predicate ( self . 0 )
571576 }
@@ -1253,14 +1258,6 @@ impl<'tcx> ToPredicate<'tcx, Clause<'tcx>> for TraitRef<'tcx> {
12531258 }
12541259}
12551260
1256- impl < ' tcx > ToPredicate < ' tcx , Clause < ' tcx > > for TraitPredicate < ' tcx > {
1257- #[ inline( always) ]
1258- fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> Clause < ' tcx > {
1259- let p: Predicate < ' tcx > = self . to_predicate ( tcx) ;
1260- p. expect_clause ( )
1261- }
1262- }
1263-
12641261impl < ' tcx > ToPredicate < ' tcx > for Binder < ' tcx , TraitRef < ' tcx > > {
12651262 #[ inline( always) ]
12661263 fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> Predicate < ' tcx > {
@@ -1287,18 +1284,6 @@ impl<'tcx> ToPredicate<'tcx, PolyTraitPredicate<'tcx>> for Binder<'tcx, TraitRef
12871284 }
12881285}
12891286
1290- impl < ' tcx > ToPredicate < ' tcx , PolyTraitPredicate < ' tcx > > for TraitRef < ' tcx > {
1291- fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> PolyTraitPredicate < ' tcx > {
1292- ty:: Binder :: dummy ( self ) . to_predicate ( tcx)
1293- }
1294- }
1295-
1296- impl < ' tcx > ToPredicate < ' tcx , PolyTraitPredicate < ' tcx > > for TraitPredicate < ' tcx > {
1297- fn to_predicate ( self , _tcx : TyCtxt < ' tcx > ) -> PolyTraitPredicate < ' tcx > {
1298- ty:: Binder :: dummy ( self )
1299- }
1300- }
1301-
13021287impl < ' tcx > ToPredicate < ' tcx > for PolyTraitPredicate < ' tcx > {
13031288 fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> Predicate < ' tcx > {
13041289 self . map_bound ( |p| PredicateKind :: Clause ( ClauseKind :: Trait ( p) ) ) . to_predicate ( tcx)
@@ -1312,12 +1297,6 @@ impl<'tcx> ToPredicate<'tcx, Clause<'tcx>> for PolyTraitPredicate<'tcx> {
13121297 }
13131298}
13141299
1315- impl < ' tcx > ToPredicate < ' tcx > for OutlivesPredicate < ty:: Region < ' tcx > , ty:: Region < ' tcx > > {
1316- fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> Predicate < ' tcx > {
1317- ty:: Binder :: dummy ( PredicateKind :: Clause ( ClauseKind :: RegionOutlives ( self ) ) ) . to_predicate ( tcx)
1318- }
1319- }
1320-
13211300impl < ' tcx > ToPredicate < ' tcx > for PolyRegionOutlivesPredicate < ' tcx > {
13221301 fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> Predicate < ' tcx > {
13231302 self . map_bound ( |p| PredicateKind :: Clause ( ClauseKind :: RegionOutlives ( p) ) ) . to_predicate ( tcx)
@@ -1330,12 +1309,6 @@ impl<'tcx> ToPredicate<'tcx> for OutlivesPredicate<Ty<'tcx>, ty::Region<'tcx>> {
13301309 }
13311310}
13321311
1333- impl < ' tcx > ToPredicate < ' tcx > for PolyTypeOutlivesPredicate < ' tcx > {
1334- fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> Predicate < ' tcx > {
1335- self . map_bound ( |p| PredicateKind :: Clause ( ClauseKind :: TypeOutlives ( p) ) ) . to_predicate ( tcx)
1336- }
1337- }
1338-
13391312impl < ' tcx > ToPredicate < ' tcx > for ProjectionPredicate < ' tcx > {
13401313 fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> Predicate < ' tcx > {
13411314 ty:: Binder :: dummy ( PredicateKind :: Clause ( ClauseKind :: Projection ( self ) ) ) . to_predicate ( tcx)
@@ -1355,13 +1328,6 @@ impl<'tcx> ToPredicate<'tcx, Clause<'tcx>> for ProjectionPredicate<'tcx> {
13551328 }
13561329}
13571330
1358- impl < ' tcx > ToPredicate < ' tcx , Clause < ' tcx > > for PolyProjectionPredicate < ' tcx > {
1359- fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> Clause < ' tcx > {
1360- let p: Predicate < ' tcx > = self . to_predicate ( tcx) ;
1361- p. expect_clause ( )
1362- }
1363- }
1364-
13651331impl < ' tcx > ToPredicate < ' tcx > for TraitPredicate < ' tcx > {
13661332 fn to_predicate ( self , tcx : TyCtxt < ' tcx > ) -> Predicate < ' tcx > {
13671333 PredicateKind :: Clause ( ClauseKind :: Trait ( self ) ) . to_predicate ( tcx)
0 commit comments