@@ -2,7 +2,7 @@ use std::collections::BTreeMap;
22
33use super :: NormalizeExt ;
44use super :: { ObligationCause , PredicateObligation , SelectionContext } ;
5- use rustc_data_structures:: fx:: { FxHashSet , FxIndexMap } ;
5+ use rustc_data_structures:: fx:: FxIndexMap ;
66use rustc_errors:: Diag ;
77use rustc_hir:: def_id:: DefId ;
88use rustc_infer:: infer:: { InferCtxt , InferOk } ;
@@ -160,43 +160,6 @@ impl<'tcx> Iterator for TraitAliasExpander<'tcx> {
160160 }
161161}
162162
163- ///////////////////////////////////////////////////////////////////////////
164- // Iterator over def-IDs of supertraits
165- ///////////////////////////////////////////////////////////////////////////
166-
167- pub struct SupertraitDefIds < ' tcx > {
168- tcx : TyCtxt < ' tcx > ,
169- stack : Vec < DefId > ,
170- visited : FxHashSet < DefId > ,
171- }
172-
173- pub fn supertrait_def_ids ( tcx : TyCtxt < ' _ > , trait_def_id : DefId ) -> SupertraitDefIds < ' _ > {
174- SupertraitDefIds {
175- tcx,
176- stack : vec ! [ trait_def_id] ,
177- visited : Some ( trait_def_id) . into_iter ( ) . collect ( ) ,
178- }
179- }
180-
181- impl Iterator for SupertraitDefIds < ' _ > {
182- type Item = DefId ;
183-
184- fn next ( & mut self ) -> Option < DefId > {
185- let def_id = self . stack . pop ( ) ?;
186- let predicates = self . tcx . super_predicates_of ( def_id) ;
187- let visited = & mut self . visited ;
188- self . stack . extend (
189- predicates
190- . predicates
191- . iter ( )
192- . filter_map ( |( pred, _) | pred. as_trait_clause ( ) )
193- . map ( |trait_ref| trait_ref. def_id ( ) )
194- . filter ( |& super_def_id| visited. insert ( super_def_id) ) ,
195- ) ;
196- Some ( def_id)
197- }
198- }
199-
200163///////////////////////////////////////////////////////////////////////////
201164// Other
202165///////////////////////////////////////////////////////////////////////////
0 commit comments