@@ -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 } ;
@@ -161,43 +161,6 @@ impl<'tcx> Iterator for TraitAliasExpander<'tcx> {
161161 }
162162}
163163
164- ///////////////////////////////////////////////////////////////////////////
165- // Iterator over def-IDs of supertraits
166- ///////////////////////////////////////////////////////////////////////////
167-
168- pub struct SupertraitDefIds < ' tcx > {
169- tcx : TyCtxt < ' tcx > ,
170- stack : Vec < DefId > ,
171- visited : FxHashSet < DefId > ,
172- }
173-
174- pub fn supertrait_def_ids ( tcx : TyCtxt < ' _ > , trait_def_id : DefId ) -> SupertraitDefIds < ' _ > {
175- SupertraitDefIds {
176- tcx,
177- stack : vec ! [ trait_def_id] ,
178- visited : Some ( trait_def_id) . into_iter ( ) . collect ( ) ,
179- }
180- }
181-
182- impl Iterator for SupertraitDefIds < ' _ > {
183- type Item = DefId ;
184-
185- fn next ( & mut self ) -> Option < DefId > {
186- let def_id = self . stack . pop ( ) ?;
187- let predicates = self . tcx . super_predicates_of ( def_id) ;
188- let visited = & mut self . visited ;
189- self . stack . extend (
190- predicates
191- . predicates
192- . iter ( )
193- . filter_map ( |( pred, _) | pred. as_trait_clause ( ) )
194- . map ( |trait_ref| trait_ref. def_id ( ) )
195- . filter ( |& super_def_id| visited. insert ( super_def_id) ) ,
196- ) ;
197- Some ( def_id)
198- }
199- }
200-
201164///////////////////////////////////////////////////////////////////////////
202165// Other
203166///////////////////////////////////////////////////////////////////////////
0 commit comments