@@ -76,7 +76,8 @@ struct PerDefTables<'tcx> {
76
76
inherent_impls : PerDefTable < Lazy < [ DefIndex ] > > ,
77
77
variances : PerDefTable < Lazy < [ ty:: Variance ] > > ,
78
78
generics : PerDefTable < Lazy < ty:: Generics > > ,
79
- predicates_defined_on : PerDefTable < Lazy < ty:: GenericPredicates < ' tcx > > > ,
79
+ explicit_predicates : PerDefTable < Lazy < ty:: GenericPredicates < ' tcx > > > ,
80
+ inferred_outlives : PerDefTable < Lazy < & ' tcx [ ( ty:: Predicate < ' tcx > , Span ) ] > > ,
80
81
super_predicates : PerDefTable < Lazy < ty:: GenericPredicates < ' tcx > > > ,
81
82
82
83
mir : PerDefTable < Lazy < mir:: Body < ' tcx > > > ,
@@ -523,7 +524,8 @@ impl<'tcx> EncodeContext<'tcx> {
523
524
inherent_impls : self . per_def . inherent_impls . encode ( & mut self . opaque ) ,
524
525
variances : self . per_def . variances . encode ( & mut self . opaque ) ,
525
526
generics : self . per_def . generics . encode ( & mut self . opaque ) ,
526
- predicates_defined_on : self . per_def . predicates_defined_on . encode ( & mut self . opaque ) ,
527
+ explicit_predicates : self . per_def . explicit_predicates . encode ( & mut self . opaque ) ,
528
+ inferred_outlives : self . per_def . inferred_outlives . encode ( & mut self . opaque ) ,
527
529
super_predicates : self . per_def . super_predicates . encode ( & mut self . opaque ) ,
528
530
529
531
mir : self . per_def . mir . encode ( & mut self . opaque ) ,
@@ -674,7 +676,8 @@ impl EncodeContext<'tcx> {
674
676
self . encode_variances_of ( def_id) ;
675
677
}
676
678
self . encode_generics ( def_id) ;
677
- self . encode_predicates_defined_on ( def_id) ;
679
+ self . encode_explicit_predicates ( def_id) ;
680
+ self . encode_inferred_outlives ( def_id) ;
678
681
self . encode_optimized_mir ( def_id) ;
679
682
self . encode_promoted_mir ( def_id) ;
680
683
}
@@ -717,7 +720,8 @@ impl EncodeContext<'tcx> {
717
720
self . encode_variances_of ( def_id) ;
718
721
}
719
722
self . encode_generics ( def_id) ;
720
- self . encode_predicates_defined_on ( def_id) ;
723
+ self . encode_explicit_predicates ( def_id) ;
724
+ self . encode_inferred_outlives ( def_id) ;
721
725
self . encode_optimized_mir ( def_id) ;
722
726
self . encode_promoted_mir ( def_id) ;
723
727
}
@@ -775,7 +779,8 @@ impl EncodeContext<'tcx> {
775
779
self . encode_deprecation ( def_id) ;
776
780
self . encode_item_type ( def_id) ;
777
781
self . encode_generics ( def_id) ;
778
- self . encode_predicates_defined_on ( def_id) ;
782
+ self . encode_explicit_predicates ( def_id) ;
783
+ self . encode_inferred_outlives ( def_id) ;
779
784
}
780
785
781
786
fn encode_struct_ctor ( & mut self , adt_def_id : DefId , def_id : DefId ) {
@@ -818,7 +823,8 @@ impl EncodeContext<'tcx> {
818
823
self . encode_variances_of ( def_id) ;
819
824
}
820
825
self . encode_generics ( def_id) ;
821
- self . encode_predicates_defined_on ( def_id) ;
826
+ self . encode_explicit_predicates ( def_id) ;
827
+ self . encode_inferred_outlives ( def_id) ;
822
828
self . encode_optimized_mir ( def_id) ;
823
829
self . encode_promoted_mir ( def_id) ;
824
830
}
@@ -828,10 +834,16 @@ impl EncodeContext<'tcx> {
828
834
record ! ( self . per_def. generics[ def_id] <- self . tcx. generics_of( def_id) ) ;
829
835
}
830
836
831
- fn encode_predicates_defined_on ( & mut self , def_id : DefId ) {
832
- debug ! ( "EncodeContext::encode_predicates_defined_on({:?})" , def_id) ;
833
- record ! ( self . per_def. predicates_defined_on[ def_id] <-
834
- self . tcx. predicates_defined_on( def_id) )
837
+ fn encode_explicit_predicates ( & mut self , def_id : DefId ) {
838
+ debug ! ( "EncodeContext::encode_explicit_predicates({:?})" , def_id) ;
839
+ record ! ( self . per_def. explicit_predicates[ def_id] <-
840
+ self . tcx. explicit_predicates_of( def_id) ) ;
841
+ }
842
+
843
+ fn encode_inferred_outlives ( & mut self , def_id : DefId ) {
844
+ debug ! ( "EncodeContext::encode_inferred_outlives({:?})" , def_id) ;
845
+ record ! ( self . per_def. inferred_outlives[ def_id] <-
846
+ self . tcx. inferred_outlives_of( def_id) ) ;
835
847
}
836
848
837
849
fn encode_super_predicates ( & mut self , def_id : DefId ) {
@@ -913,7 +925,8 @@ impl EncodeContext<'tcx> {
913
925
self . encode_variances_of ( def_id) ;
914
926
}
915
927
self . encode_generics ( def_id) ;
916
- self . encode_predicates_defined_on ( def_id) ;
928
+ self . encode_explicit_predicates ( def_id) ;
929
+ self . encode_inferred_outlives ( def_id) ;
917
930
self . encode_optimized_mir ( def_id) ;
918
931
self . encode_promoted_mir ( def_id) ;
919
932
}
@@ -980,7 +993,8 @@ impl EncodeContext<'tcx> {
980
993
self . encode_variances_of ( def_id) ;
981
994
}
982
995
self . encode_generics ( def_id) ;
983
- self . encode_predicates_defined_on ( def_id) ;
996
+ self . encode_explicit_predicates ( def_id) ;
997
+ self . encode_inferred_outlives ( def_id) ;
984
998
let mir = match ast_item. kind {
985
999
hir:: ImplItemKind :: Const ( ..) => true ,
986
1000
hir:: ImplItemKind :: Method ( ref sig, _) => {
@@ -1254,7 +1268,8 @@ impl EncodeContext<'tcx> {
1254
1268
hir:: ItemKind :: Trait ( ..) |
1255
1269
hir:: ItemKind :: TraitAlias ( ..) => {
1256
1270
self . encode_generics ( def_id) ;
1257
- self . encode_predicates_defined_on ( def_id) ;
1271
+ self . encode_explicit_predicates ( def_id) ;
1272
+ self . encode_inferred_outlives ( def_id) ;
1258
1273
}
1259
1274
_ => { }
1260
1275
}
@@ -1359,7 +1374,8 @@ impl EncodeContext<'tcx> {
1359
1374
record ! ( self . per_def. span[ def_id] <- self . tcx. def_span( def_id) ) ;
1360
1375
self . encode_item_type ( def_id) ;
1361
1376
self . encode_generics ( def_id) ;
1362
- self . encode_predicates_defined_on ( def_id) ;
1377
+ self . encode_explicit_predicates ( def_id) ;
1378
+ self . encode_inferred_outlives ( def_id) ;
1363
1379
self . encode_optimized_mir ( def_id) ;
1364
1380
self . encode_promoted_mir ( def_id) ;
1365
1381
}
@@ -1570,7 +1586,8 @@ impl EncodeContext<'tcx> {
1570
1586
self . encode_variances_of ( def_id) ;
1571
1587
}
1572
1588
self . encode_generics ( def_id) ;
1573
- self . encode_predicates_defined_on ( def_id) ;
1589
+ self . encode_explicit_predicates ( def_id) ;
1590
+ self . encode_inferred_outlives ( def_id) ;
1574
1591
}
1575
1592
}
1576
1593
0 commit comments