@@ -1128,54 +1128,10 @@ fn super_traits_of(tcx: TyCtxt<'_>, trait_def_id: DefId) -> Lrc<FxHashSet<DefId>
1128
1128
continue ;
1129
1129
}
1130
1130
1131
- if trait_did. is_local ( ) {
1132
- let trait_hir_id = tcx. hir ( ) . local_def_id_to_hir_id ( trait_did. expect_local ( ) ) ;
1133
-
1134
- let item = match tcx. hir ( ) . get ( trait_hir_id) {
1135
- Node :: Item ( item) => item,
1136
- _ => bug ! ( "super_trait_of {} is not an item" , trait_hir_id) ,
1137
- } ;
1138
-
1139
- let ( generics, supertraits) = match item. kind {
1140
- hir:: ItemKind :: Trait ( .., ref generics, ref supertraits, _) => {
1141
- ( generics, supertraits)
1142
- }
1143
- hir:: ItemKind :: TraitAlias ( ref generics, ref supertraits) => ( generics, supertraits) ,
1144
- _ => span_bug ! ( item. span, "super_predicates invoked on non-trait" ) ,
1145
- } ;
1146
-
1147
- for supertrait in supertraits. iter ( ) {
1148
- let trait_ref = supertrait. trait_ref ( ) ;
1149
- if let Some ( trait_did) = trait_ref. and_then ( |trait_ref| trait_ref. trait_def_id ( ) ) {
1150
- stack. push ( trait_did) ;
1151
- }
1152
- }
1153
-
1154
- let icx = ItemCtxt :: new ( tcx, trait_did) ;
1155
- // Convert any explicit superbounds in the where-clause,
1156
- // e.g., `trait Foo where Self: Bar`.
1157
- // In the case of trait aliases, however, we include all bounds in the where-clause,
1158
- // so e.g., `trait Foo = where u32: PartialEq<Self>` would include `u32: PartialEq<Self>`
1159
- // as one of its "superpredicates".
1160
- let is_trait_alias = tcx. is_trait_alias ( trait_did) ;
1161
- let self_param_ty = tcx. types . self_param ;
1162
- for ( predicate, _) in icx. type_parameter_bounds_in_generics (
1163
- generics,
1164
- item. hir_id ,
1165
- self_param_ty,
1166
- OnlySelfBounds ( !is_trait_alias) ,
1167
- None ,
1168
- ) {
1169
- if let ty:: PredicateAtom :: Trait ( data, _) = predicate. skip_binders ( ) {
1170
- stack. push ( data. def_id ( ) ) ;
1171
- }
1172
- }
1173
- } else {
1174
- let generic_predicates = tcx. super_predicates_of ( trait_did) ;
1175
- for ( predicate, _) in generic_predicates. predicates {
1176
- if let ty:: PredicateAtom :: Trait ( data, _) = predicate. skip_binders ( ) {
1177
- stack. push ( data. def_id ( ) ) ;
1178
- }
1131
+ let generic_predicates = tcx. super_predicates_of ( trait_did) ;
1132
+ for ( predicate, _) in generic_predicates. predicates {
1133
+ if let ty:: PredicateAtom :: Trait ( data, _) = predicate. skip_binders ( ) {
1134
+ stack. push ( data. def_id ( ) ) ;
1179
1135
}
1180
1136
}
1181
1137
}
0 commit comments