@@ -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,8 +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 : Some ( self . encode_predicates ( def_id) ) ,
617
- predicates_defined_on : None ,
624
+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
625
+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id ) ) ,
618
626
619
627
mir : self . encode_optimized_mir ( def_id) ,
620
628
}
@@ -669,8 +677,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
669
677
LazySeq :: empty ( )
670
678
} ,
671
679
generics : Some ( self . encode_generics ( def_id) ) ,
672
- predicates : Some ( self . encode_predicates ( def_id) ) ,
673
- predicates_defined_on : None ,
680
+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
681
+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id ) ) ,
674
682
675
683
mir : self . encode_optimized_mir ( def_id) ,
676
684
}
@@ -707,8 +715,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
707
715
inherent_impls : LazySeq :: empty ( ) ,
708
716
variances : LazySeq :: empty ( ) ,
709
717
generics : None ,
710
- predicates : None ,
711
- predicates_defined_on : None ,
718
+ explicit_predicates : None ,
719
+ inferred_outlives : None ,
712
720
713
721
mir : None
714
722
}
@@ -748,8 +756,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
748
756
inherent_impls : LazySeq :: empty ( ) ,
749
757
variances : LazySeq :: empty ( ) ,
750
758
generics : Some ( self . encode_generics ( def_id) ) ,
751
- predicates : Some ( self . encode_predicates ( def_id) ) ,
752
- predicates_defined_on : None ,
759
+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
760
+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id ) ) ,
753
761
754
762
mir : None ,
755
763
}
@@ -808,8 +816,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
808
816
LazySeq :: empty ( )
809
817
} ,
810
818
generics : Some ( self . encode_generics ( def_id) ) ,
811
- predicates : Some ( self . encode_predicates ( def_id) ) ,
812
- predicates_defined_on : None ,
819
+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
820
+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id ) ) ,
813
821
814
822
mir : self . encode_optimized_mir ( def_id) ,
815
823
}
@@ -821,16 +829,16 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
821
829
self . lazy ( tcx. generics_of ( def_id) )
822
830
}
823
831
824
- fn encode_predicates ( & mut self , def_id : DefId ) -> Lazy < ty:: GenericPredicates < ' tcx > > {
825
- debug ! ( "IsolatedEncoder::encode_predicates ({:?})" , def_id) ;
832
+ fn encode_explicit_predicates ( & mut self , def_id : DefId ) -> Lazy < ty:: GenericPredicates < ' tcx > > {
833
+ debug ! ( "IsolatedEncoder::encode_explicit_predicates ({:?})" , def_id) ;
826
834
let tcx = self . tcx ;
827
- self . lazy ( & tcx. predicates_of ( def_id) )
835
+ self . lazy ( & tcx. explicit_predicates_of ( def_id) )
828
836
}
829
837
830
- fn encode_predicates_defined_on ( & mut self , def_id : DefId ) -> Lazy < ty:: GenericPredicates < ' tcx > > {
831
- debug ! ( "IsolatedEncoder::encode_predicates_defined_on ({:?})" , def_id) ;
838
+ fn encode_inferred_outlives ( & mut self , def_id : DefId ) -> Lazy < Vec < ty:: Predicate < ' tcx > > > {
839
+ debug ! ( "IsolatedEncoder::encode_inferred_outlives ({:?})" , def_id) ;
832
840
let tcx = self . tcx ;
833
- self . lazy ( & tcx. predicates_defined_on ( def_id) )
841
+ self . lazy ( & tcx. inferred_outlives_of ( def_id) )
834
842
}
835
843
836
844
fn encode_info_for_trait_item ( & mut self , def_id : DefId ) -> Entry < ' tcx > {
@@ -924,8 +932,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
924
932
LazySeq :: empty ( )
925
933
} ,
926
934
generics : Some ( self . encode_generics ( def_id) ) ,
927
- predicates : Some ( self . encode_predicates ( def_id) ) ,
928
- predicates_defined_on : None ,
935
+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
936
+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id ) ) ,
929
937
930
938
mir : self . encode_optimized_mir ( def_id) ,
931
939
}
@@ -1023,8 +1031,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1023
1031
LazySeq :: empty ( )
1024
1032
} ,
1025
1033
generics : Some ( self . encode_generics ( def_id) ) ,
1026
- predicates : Some ( self . encode_predicates ( def_id) ) ,
1027
- predicates_defined_on : None ,
1034
+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
1035
+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id ) ) ,
1028
1036
1029
1037
mir : if mir { self . encode_optimized_mir ( def_id) } else { None } ,
1030
1038
}
@@ -1280,7 +1288,7 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1280
1288
hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_generics ( def_id) ) ,
1281
1289
_ => None ,
1282
1290
} ,
1283
- predicates : match item. node {
1291
+ explicit_predicates : match item. node {
1284
1292
hir:: ItemKind :: Static ( ..) |
1285
1293
hir:: ItemKind :: Const ( ..) |
1286
1294
hir:: ItemKind :: Fn ( ..) |
@@ -1291,19 +1299,22 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1291
1299
hir:: ItemKind :: Impl ( ..) |
1292
1300
hir:: ItemKind :: Existential ( ..) |
1293
1301
hir:: ItemKind :: Trait ( ..) |
1294
- hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_predicates ( def_id) ) ,
1302
+ hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_explicit_predicates ( def_id) ) ,
1295
1303
_ => None ,
1296
1304
} ,
1297
-
1298
- // The only time that `predicates_defined_on` is used (on
1299
- // an external item) is for traits, during chalk lowering,
1300
- // so only encode it in that case as an efficiency
1301
- // hack. (No reason not to expand it in the future if
1302
- // necessary.)
1303
- predicates_defined_on : match item. node {
1305
+ inferred_outlives : match item. node {
1306
+ hir:: ItemKind :: Static ( ..) |
1307
+ hir:: ItemKind :: Const ( ..) |
1308
+ hir:: ItemKind :: Fn ( ..) |
1309
+ hir:: ItemKind :: Ty ( ..) |
1310
+ hir:: ItemKind :: Enum ( ..) |
1311
+ hir:: ItemKind :: Struct ( ..) |
1312
+ hir:: ItemKind :: Union ( ..) |
1313
+ hir:: ItemKind :: Impl ( ..) |
1314
+ hir:: ItemKind :: Existential ( ..) |
1304
1315
hir:: ItemKind :: Trait ( ..) |
1305
- hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_predicates_defined_on ( def_id) ) ,
1306
- _ => None , // not *wrong* for other kinds of items, but not needed
1316
+ hir:: ItemKind :: TraitAlias ( ..) => Some ( self . encode_inferred_outlives ( def_id) ) ,
1317
+ _ => None ,
1307
1318
} ,
1308
1319
1309
1320
mir : match item. node {
@@ -1352,8 +1363,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1352
1363
inherent_impls : LazySeq :: empty ( ) ,
1353
1364
variances : LazySeq :: empty ( ) ,
1354
1365
generics : None ,
1355
- predicates : None ,
1356
- predicates_defined_on : None ,
1366
+ explicit_predicates : None ,
1367
+ inferred_outlives : None ,
1357
1368
mir : None ,
1358
1369
}
1359
1370
}
@@ -1377,8 +1388,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1377
1388
inherent_impls : LazySeq :: empty ( ) ,
1378
1389
variances : LazySeq :: empty ( ) ,
1379
1390
generics : None ,
1380
- predicates : None ,
1381
- predicates_defined_on : None ,
1391
+ explicit_predicates : None ,
1392
+ inferred_outlives : None ,
1382
1393
1383
1394
mir : None ,
1384
1395
}
@@ -1437,8 +1448,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1437
1448
inherent_impls : LazySeq :: empty ( ) ,
1438
1449
variances : LazySeq :: empty ( ) ,
1439
1450
generics : Some ( self . encode_generics ( def_id) ) ,
1440
- predicates : None ,
1441
- predicates_defined_on : None ,
1451
+ explicit_predicates : None ,
1452
+ inferred_outlives : None ,
1442
1453
1443
1454
mir : self . encode_optimized_mir ( def_id) ,
1444
1455
}
@@ -1465,8 +1476,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1465
1476
inherent_impls : LazySeq :: empty ( ) ,
1466
1477
variances : LazySeq :: empty ( ) ,
1467
1478
generics : Some ( self . encode_generics ( def_id) ) ,
1468
- predicates : Some ( self . encode_predicates ( def_id) ) ,
1469
- predicates_defined_on : None ,
1479
+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
1480
+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id ) ) ,
1470
1481
1471
1482
mir : self . encode_optimized_mir ( def_id) ,
1472
1483
}
@@ -1668,8 +1679,8 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1668
1679
_ => LazySeq :: empty ( ) ,
1669
1680
} ,
1670
1681
generics : Some ( self . encode_generics ( def_id) ) ,
1671
- predicates : Some ( self . encode_predicates ( def_id) ) ,
1672
- predicates_defined_on : None ,
1682
+ explicit_predicates : Some ( self . encode_explicit_predicates ( def_id) ) ,
1683
+ inferred_outlives : Some ( self . encode_inferred_outlives ( def_id ) ) ,
1673
1684
1674
1685
mir : None ,
1675
1686
}
0 commit comments