@@ -203,11 +203,19 @@ impl<'a, 'tcx> SpecializedEncoder<interpret::AllocId> for EncodeContext<'a, 'tcx
203
203
}
204
204
}
205
205
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
+
206
214
impl < ' a , ' tcx > SpecializedEncoder < ty:: GenericPredicates < ' tcx > > for EncodeContext < ' a , ' tcx > {
207
215
fn specialized_encode ( & mut self ,
208
216
predicates : & ty:: GenericPredicates < ' tcx > )
209
217
-> 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 )
211
219
}
212
220
}
213
221
@@ -613,7 +621,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
613
621
LazySeq :: empty ( )
614
622
} ,
615
623
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) ) ,
617
626
618
627
mir : self . encode_optimized_mir ( def_id) ,
619
628
}
@@ -668,7 +677,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
668
677
LazySeq :: empty ( )
669
678
} ,
670
679
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) ) ,
672
682
673
683
mir : self . encode_optimized_mir ( def_id) ,
674
684
}
@@ -705,7 +715,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
705
715
inherent_impls : LazySeq :: empty ( ) ,
706
716
variances : LazySeq :: empty ( ) ,
707
717
generics : None ,
708
- predicates_defined_on : None ,
718
+ explicit_predicates : None ,
719
+ inferred_outlives : None ,
709
720
710
721
mir : None
711
722
}
@@ -745,7 +756,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
745
756
inherent_impls : LazySeq :: empty ( ) ,
746
757
variances : LazySeq :: empty ( ) ,
747
758
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) ) ,
749
761
750
762
mir : None ,
751
763
}
@@ -804,7 +816,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
804
816
LazySeq :: empty ( )
805
817
} ,
806
818
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) ) ,
808
821
809
822
mir : self . encode_optimized_mir ( def_id) ,
810
823
}
@@ -816,10 +829,16 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
816
829
self . lazy ( tcx. generics_of ( def_id) )
817
830
}
818
831
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) ;
821
834
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) )
823
842
}
824
843
825
844
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> {
913
932
LazySeq :: empty ( )
914
933
} ,
915
934
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) ) ,
917
937
918
938
mir : self . encode_optimized_mir ( def_id) ,
919
939
}
@@ -1011,7 +1031,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1011
1031
LazySeq :: empty ( )
1012
1032
} ,
1013
1033
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) ) ,
1015
1036
1016
1037
mir : if mir { self . encode_optimized_mir ( def_id) } else { None } ,
1017
1038
}
@@ -1267,7 +1288,21 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1267
1288
hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_generics ( def_id) ) ,
1268
1289
_ => None ,
1269
1290
} ,
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 {
1271
1306
hir:: ItemKind :: Static ( ..) |
1272
1307
hir:: ItemKind :: Const ( ..) |
1273
1308
hir:: ItemKind :: Fn ( ..) |
@@ -1278,7 +1313,7 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1278
1313
hir:: ItemKind :: Impl ( ..) |
1279
1314
hir:: ItemKind :: Existential ( ..) |
1280
1315
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) ) ,
1282
1317
_ => None ,
1283
1318
} ,
1284
1319
@@ -1328,7 +1363,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1328
1363
inherent_impls : LazySeq :: empty ( ) ,
1329
1364
variances : LazySeq :: empty ( ) ,
1330
1365
generics : None ,
1331
- predicates_defined_on : None ,
1366
+ explicit_predicates : None ,
1367
+ inferred_outlives : None ,
1332
1368
mir : None ,
1333
1369
}
1334
1370
}
@@ -1352,7 +1388,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1352
1388
inherent_impls : LazySeq :: empty ( ) ,
1353
1389
variances : LazySeq :: empty ( ) ,
1354
1390
generics : None ,
1355
- predicates_defined_on : None ,
1391
+ explicit_predicates : None ,
1392
+ inferred_outlives : None ,
1356
1393
1357
1394
mir : None ,
1358
1395
}
@@ -1411,7 +1448,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1411
1448
inherent_impls : LazySeq :: empty ( ) ,
1412
1449
variances : LazySeq :: empty ( ) ,
1413
1450
generics : Some ( self . encode_generics ( def_id) ) ,
1414
- predicates_defined_on : None ,
1451
+ explicit_predicates : None ,
1452
+ inferred_outlives : None ,
1415
1453
1416
1454
mir : self . encode_optimized_mir ( def_id) ,
1417
1455
}
@@ -1438,7 +1476,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1438
1476
inherent_impls : LazySeq :: empty ( ) ,
1439
1477
variances : LazySeq :: empty ( ) ,
1440
1478
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) ) ,
1442
1481
1443
1482
mir : self . encode_optimized_mir ( def_id) ,
1444
1483
}
@@ -1640,7 +1679,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1640
1679
_ => LazySeq :: empty ( ) ,
1641
1680
} ,
1642
1681
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) ) ,
1644
1684
1645
1685
mir : None ,
1646
1686
}
0 commit comments