@@ -516,7 +516,11 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
516
516
517
517
ty : Some ( self . encode_item_type ( def_id) ) ,
518
518
inherent_impls : LazySeq :: empty ( ) ,
519
- variances : LazySeq :: empty ( ) ,
519
+ variances : if variant. ctor_kind == CtorKind :: Fn {
520
+ self . encode_variances_of ( def_id)
521
+ } else {
522
+ LazySeq :: empty ( )
523
+ } ,
520
524
generics : Some ( self . encode_generics ( def_id) ) ,
521
525
predicates : Some ( self . encode_predicates ( def_id) ) ,
522
526
@@ -644,7 +648,11 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
644
648
645
649
ty : Some ( self . encode_item_type ( def_id) ) ,
646
650
inherent_impls : LazySeq :: empty ( ) ,
647
- variances : LazySeq :: empty ( ) ,
651
+ variances : if variant. ctor_kind == CtorKind :: Fn {
652
+ self . encode_variances_of ( def_id)
653
+ } else {
654
+ LazySeq :: empty ( )
655
+ } ,
648
656
generics : Some ( self . encode_generics ( def_id) ) ,
649
657
predicates : Some ( self . encode_predicates ( def_id) ) ,
650
658
@@ -736,7 +744,11 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
736
744
}
737
745
} ,
738
746
inherent_impls : LazySeq :: empty ( ) ,
739
- variances : LazySeq :: empty ( ) ,
747
+ variances : if trait_item. kind == ty:: AssociatedKind :: Method {
748
+ self . encode_variances_of ( def_id)
749
+ } else {
750
+ LazySeq :: empty ( )
751
+ } ,
740
752
generics : Some ( self . encode_generics ( def_id) ) ,
741
753
predicates : Some ( self . encode_predicates ( def_id) ) ,
742
754
@@ -813,7 +825,11 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
813
825
814
826
ty : Some ( self . encode_item_type ( def_id) ) ,
815
827
inherent_impls : LazySeq :: empty ( ) ,
816
- variances : LazySeq :: empty ( ) ,
828
+ variances : if impl_item. kind == ty:: AssociatedKind :: Method {
829
+ self . encode_variances_of ( def_id)
830
+ } else {
831
+ LazySeq :: empty ( )
832
+ } ,
817
833
generics : Some ( self . encode_generics ( def_id) ) ,
818
834
predicates : Some ( self . encode_predicates ( def_id) ) ,
819
835
@@ -1047,7 +1063,7 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1047
1063
hir:: ItemEnum ( ..) |
1048
1064
hir:: ItemStruct ( ..) |
1049
1065
hir:: ItemUnion ( ..) |
1050
- hir:: ItemTrait ( ..) => self . encode_variances_of ( def_id) ,
1066
+ hir:: ItemFn ( ..) => self . encode_variances_of ( def_id) ,
1051
1067
_ => LazySeq :: empty ( ) ,
1052
1068
} ,
1053
1069
generics : match item. node {
@@ -1392,7 +1408,10 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
1392
1408
1393
1409
ty : Some ( self . encode_item_type ( def_id) ) ,
1394
1410
inherent_impls : LazySeq :: empty ( ) ,
1395
- variances : LazySeq :: empty ( ) ,
1411
+ variances : match nitem. node {
1412
+ hir:: ForeignItemFn ( ..) => self . encode_variances_of ( def_id) ,
1413
+ _ => LazySeq :: empty ( ) ,
1414
+ } ,
1396
1415
generics : Some ( self . encode_generics ( def_id) ) ,
1397
1416
predicates : Some ( self . encode_predicates ( def_id) ) ,
1398
1417
0 commit comments