@@ -203,11 +203,19 @@ impl<'a, 'tcx> SpecializedEncoder<interpret::AllocId> for EncodeContext<'a, 'tcx
203203 }
204204}
205205
206+ impl < ' a , ' tcx > SpecializedEncoder < Vec < ty:: Predicate < ' tcx > > > for EncodeContext < ' a , ' tcx > {
207+ fn specialized_encode ( & mut self ,
208+ predicates : & Vec < ty:: Predicate < ' tcx > > )
209+ -> Result < ( ) , Self :: Error > {
210+ ty_codec:: encode_predicates ( self , predicates, |ecx| & mut ecx. predicate_shorthands )
211+ }
212+ }
213+
206214impl < ' a , ' tcx > SpecializedEncoder < ty:: GenericPredicates < ' tcx > > for EncodeContext < ' a , ' tcx > {
207215 fn specialized_encode ( & mut self ,
208216 predicates : & ty:: GenericPredicates < ' tcx > )
209217 -> Result < ( ) , Self :: Error > {
210- ty_codec:: encode_predicates ( self , predicates, |ecx| & mut ecx. predicate_shorthands )
218+ ty_codec:: encode_generic_predicates ( self , predicates, |ecx| & mut ecx. predicate_shorthands )
211219 }
212220}
213221
@@ -613,7 +621,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
613621 LazySeq :: empty ( )
614622 } ,
615623 generics : Some ( self . encode_generics ( def_id) ) ,
616- predicates_defined_on : Some ( self . encode_predicates_defined_on ( def_id) ) ,
624+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
625+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id) ) ,
617626
618627 mir : self . encode_optimized_mir ( def_id) ,
619628 }
@@ -668,7 +677,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
668677 LazySeq :: empty ( )
669678 } ,
670679 generics : Some ( self . encode_generics ( def_id) ) ,
671- predicates_defined_on : Some ( self . encode_predicates_defined_on ( def_id) ) ,
680+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
681+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id) ) ,
672682
673683 mir : self . encode_optimized_mir ( def_id) ,
674684 }
@@ -705,7 +715,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
705715 inherent_impls : LazySeq :: empty ( ) ,
706716 variances : LazySeq :: empty ( ) ,
707717 generics : None ,
708- predicates_defined_on : None ,
718+ explicit_predicates : None ,
719+ inferred_outlives : None ,
709720
710721 mir : None
711722 }
@@ -745,7 +756,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
745756 inherent_impls : LazySeq :: empty ( ) ,
746757 variances : LazySeq :: empty ( ) ,
747758 generics : Some ( self . encode_generics ( def_id) ) ,
748- predicates_defined_on : Some ( self . encode_predicates_defined_on ( def_id) ) ,
759+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
760+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id) ) ,
749761
750762 mir : None ,
751763 }
@@ -804,7 +816,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
804816 LazySeq :: empty ( )
805817 } ,
806818 generics : Some ( self . encode_generics ( def_id) ) ,
807- predicates_defined_on : Some ( self . encode_predicates_defined_on ( def_id) ) ,
819+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
820+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id) ) ,
808821
809822 mir : self . encode_optimized_mir ( def_id) ,
810823 }
@@ -816,10 +829,16 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
816829 self . lazy ( tcx. generics_of ( def_id) )
817830 }
818831
819- fn encode_predicates_defined_on ( & mut self , def_id : DefId ) -> Lazy < ty:: GenericPredicates < ' tcx > > {
820- debug ! ( "IsolatedEncoder::encode_predicates_defined_on ({:?})" , def_id) ;
832+ fn encode_explicit_predicates ( & mut self , def_id : DefId ) -> Lazy < ty:: GenericPredicates < ' tcx > > {
833+ debug ! ( "IsolatedEncoder::encode_explicit_predicates ({:?})" , def_id) ;
821834 let tcx = self . tcx ;
822- self . lazy ( & tcx. predicates_defined_on ( def_id) )
835+ self . lazy ( & tcx. explicit_predicates_of ( def_id) )
836+ }
837+
838+ fn encode_inferred_outlives ( & mut self , def_id : DefId ) -> Lazy < Vec < ty:: Predicate < ' tcx > > > {
839+ debug ! ( "IsolatedEncoder::encode_inferred_outlives({:?})" , def_id) ;
840+ let tcx = self . tcx ;
841+ self . lazy ( & tcx. inferred_outlives_of ( def_id) )
823842 }
824843
825844 fn encode_info_for_trait_item ( & mut self , def_id : DefId ) -> Entry < ' tcx > {
@@ -913,7 +932,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
913932 LazySeq :: empty ( )
914933 } ,
915934 generics : Some ( self . encode_generics ( def_id) ) ,
916- predicates_defined_on : Some ( self . encode_predicates_defined_on ( def_id) ) ,
935+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
936+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id) ) ,
917937
918938 mir : self . encode_optimized_mir ( def_id) ,
919939 }
@@ -1011,7 +1031,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
10111031 LazySeq :: empty ( )
10121032 } ,
10131033 generics : Some ( self . encode_generics ( def_id) ) ,
1014- predicates_defined_on : Some ( self . encode_predicates_defined_on ( def_id) ) ,
1034+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
1035+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id) ) ,
10151036
10161037 mir : if mir { self . encode_optimized_mir ( def_id) } else { None } ,
10171038 }
@@ -1267,7 +1288,21 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
12671288 hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_generics ( def_id) ) ,
12681289 _ => None ,
12691290 } ,
1270- predicates_defined_on : match item. node {
1291+ explicit_predicates : match item. node {
1292+ hir:: ItemKind :: Static ( ..) |
1293+ hir:: ItemKind :: Const ( ..) |
1294+ hir:: ItemKind :: Fn ( ..) |
1295+ hir:: ItemKind :: Ty ( ..) |
1296+ hir:: ItemKind :: Enum ( ..) |
1297+ hir:: ItemKind :: Struct ( ..) |
1298+ hir:: ItemKind :: Union ( ..) |
1299+ hir:: ItemKind :: Impl ( ..) |
1300+ hir:: ItemKind :: Existential ( ..) |
1301+ hir:: ItemKind :: Trait ( ..) |
1302+ hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_explicit_predicates ( def_id) ) ,
1303+ _ => None ,
1304+ } ,
1305+ inferred_outlives : match item. node {
12711306 hir:: ItemKind :: Static ( ..) |
12721307 hir:: ItemKind :: Const ( ..) |
12731308 hir:: ItemKind :: Fn ( ..) |
@@ -1278,7 +1313,7 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
12781313 hir:: ItemKind :: Impl ( ..) |
12791314 hir:: ItemKind :: Existential ( ..) |
12801315 hir:: ItemKind :: Trait ( ..) |
1281- hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_predicates_defined_on ( def_id) ) ,
1316+ hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_inferred_outlives ( def_id) ) ,
12821317 _ => None ,
12831318 } ,
12841319
@@ -1328,7 +1363,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
13281363 inherent_impls : LazySeq :: empty ( ) ,
13291364 variances : LazySeq :: empty ( ) ,
13301365 generics : None ,
1331- predicates_defined_on : None ,
1366+ explicit_predicates : None ,
1367+ inferred_outlives : None ,
13321368 mir : None ,
13331369 }
13341370 }
@@ -1352,7 +1388,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
13521388 inherent_impls : LazySeq :: empty ( ) ,
13531389 variances : LazySeq :: empty ( ) ,
13541390 generics : None ,
1355- predicates_defined_on : None ,
1391+ explicit_predicates : None ,
1392+ inferred_outlives : None ,
13561393
13571394 mir : None ,
13581395 }
@@ -1411,7 +1448,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
14111448 inherent_impls : LazySeq :: empty ( ) ,
14121449 variances : LazySeq :: empty ( ) ,
14131450 generics : Some ( self . encode_generics ( def_id) ) ,
1414- predicates_defined_on : None ,
1451+ explicit_predicates : None ,
1452+ inferred_outlives : None ,
14151453
14161454 mir : self . encode_optimized_mir ( def_id) ,
14171455 }
@@ -1438,7 +1476,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
14381476 inherent_impls : LazySeq :: empty ( ) ,
14391477 variances : LazySeq :: empty ( ) ,
14401478 generics : Some ( self . encode_generics ( def_id) ) ,
1441- predicates_defined_on : Some ( self . encode_predicates_defined_on ( def_id) ) ,
1479+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
1480+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id) ) ,
14421481
14431482 mir : self . encode_optimized_mir ( def_id) ,
14441483 }
@@ -1640,7 +1679,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
16401679 _ => LazySeq :: empty ( ) ,
16411680 } ,
16421681 generics : Some ( self . encode_generics ( def_id) ) ,
1643- predicates_defined_on : Some ( self . encode_predicates_defined_on ( def_id) ) ,
1682+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
1683+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id) ) ,
16441684
16451685 mir : None ,
16461686 }
0 commit comments