| 
1 | 1 | use crate::traits::query::evaluate_obligation::InferCtxtExt as _;  | 
2 |  | -use crate::traits::query::outlives_bounds::InferCtxtExt as _;  | 
3 | 2 | use crate::traits::{self, TraitEngine, TraitEngineExt};  | 
4 | 3 | 
 
  | 
5 |  | -use rustc_data_structures::stable_set::FxHashSet;  | 
6 |  | -use rustc_hir as hir;  | 
7 | 4 | use rustc_hir::def_id::DefId;  | 
8 | 5 | use rustc_hir::lang_items::LangItem;  | 
9 |  | -use rustc_infer::infer::outlives::env::OutlivesEnvironment;  | 
10 | 6 | use rustc_infer::traits::ObligationCause;  | 
11 | 7 | use rustc_middle::arena::ArenaAllocatable;  | 
12 | 8 | use rustc_middle::infer::canonical::{Canonical, CanonicalizedQueryResponse, QueryResponse};  | 
@@ -180,48 +176,3 @@ impl<'tcx> InferCtxtBuilderExt<'tcx> for InferCtxtBuilder<'tcx> {  | 
180 | 176 |         )  | 
181 | 177 |     }  | 
182 | 178 | }  | 
183 |  | - | 
184 |  | -pub trait OutlivesEnvironmentExt<'tcx> {  | 
185 |  | -    fn add_implied_bounds(  | 
186 |  | -        &mut self,  | 
187 |  | -        infcx: &InferCtxt<'a, 'tcx>,  | 
188 |  | -        fn_sig_tys: FxHashSet<Ty<'tcx>>,  | 
189 |  | -        body_id: hir::HirId,  | 
190 |  | -        span: Span,  | 
191 |  | -    );  | 
192 |  | -}  | 
193 |  | - | 
194 |  | -impl<'tcx> OutlivesEnvironmentExt<'tcx> for OutlivesEnvironment<'tcx> {  | 
195 |  | -    /// This method adds "implied bounds" into the outlives environment.  | 
196 |  | -    /// Implied bounds are outlives relationships that we can deduce  | 
197 |  | -    /// on the basis that certain types must be well-formed -- these are  | 
198 |  | -    /// either the types that appear in the function signature or else  | 
199 |  | -    /// the input types to an impl. For example, if you have a function  | 
200 |  | -    /// like  | 
201 |  | -    ///  | 
202 |  | -    /// ```  | 
203 |  | -    /// fn foo<'a, 'b, T>(x: &'a &'b [T]) { }  | 
204 |  | -    /// ```  | 
205 |  | -    ///  | 
206 |  | -    /// we can assume in the caller's body that `'b: 'a` and that `T:  | 
207 |  | -    /// 'b` (and hence, transitively, that `T: 'a`). This method would  | 
208 |  | -    /// add those assumptions into the outlives-environment.  | 
209 |  | -    ///  | 
210 |  | -    /// Tests: `src/test/ui/regions/regions-free-region-ordering-*.rs`  | 
211 |  | -    fn add_implied_bounds(  | 
212 |  | -        &mut self,  | 
213 |  | -        infcx: &InferCtxt<'a, 'tcx>,  | 
214 |  | -        fn_sig_tys: FxHashSet<Ty<'tcx>>,  | 
215 |  | -        body_id: hir::HirId,  | 
216 |  | -        span: Span,  | 
217 |  | -    ) {  | 
218 |  | -        debug!("add_implied_bounds()");  | 
219 |  | - | 
220 |  | -        for ty in fn_sig_tys {  | 
221 |  | -            let ty = infcx.resolve_vars_if_possible(ty);  | 
222 |  | -            debug!("add_implied_bounds: ty = {}", ty);  | 
223 |  | -            let implied_bounds = infcx.implied_outlives_bounds(self.param_env, body_id, ty, span);  | 
224 |  | -            self.add_outlives_bounds(Some(infcx), implied_bounds)  | 
225 |  | -        }  | 
226 |  | -    }  | 
227 |  | -}  | 
0 commit comments