diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-11-25 18:35:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-25 18:35:41 +0100 |
| commit | 7fac5048c4a75f91874ac77a14257c88f3aa60b9 (patch) | |
| tree | da96858368ced4c91bde992868c55fd223b400f7 /compiler/rustc_trait_selection/src/traits/util.rs | |
| parent | aec60c6b7cc511979b176f9935b9f9d7c807ecd2 (diff) | |
| parent | 3dee3aac78a6aee6089ef7123cd884ea6a9972bc (diff) | |
| download | rust-7fac5048c4a75f91874ac77a14257c88f3aa60b9.tar.gz rust-7fac5048c4a75f91874ac77a14257c88f3aa60b9.zip | |
Rollup merge of #104835 - spastorino:use-partially_normalize_associated_types_in, r=lcnr
Use infcx.partially_normalize_associated_types_in r? ``@lcnr``
Diffstat (limited to 'compiler/rustc_trait_selection/src/traits/util.rs')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/util.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/util.rs b/compiler/rustc_trait_selection/src/traits/util.rs index a496cea0b00..dae7d589d5c 100644 --- a/compiler/rustc_trait_selection/src/traits/util.rs +++ b/compiler/rustc_trait_selection/src/traits/util.rs @@ -8,7 +8,9 @@ use rustc_hir::def_id::DefId; use rustc_middle::ty::{self, ImplSubject, ToPredicate, Ty, TyCtxt, TypeVisitable}; use rustc_middle::ty::{GenericArg, SubstsRef}; -use super::{Normalized, Obligation, ObligationCause, PredicateObligation, SelectionContext}; +use super::{Obligation, ObligationCause, PredicateObligation, SelectionContext}; +use crate::infer::InferCtxtExt; +use rustc_infer::infer::InferOk; pub use rustc_infer::traits::{self, util::*}; /////////////////////////////////////////////////////////////////////////// @@ -200,13 +202,15 @@ pub fn impl_subject_and_oblig<'a, 'tcx>( ) -> (ImplSubject<'tcx>, impl Iterator<Item = PredicateObligation<'tcx>>) { let subject = selcx.tcx().bound_impl_subject(impl_def_id); let subject = subject.subst(selcx.tcx(), impl_substs); - let Normalized { value: subject, obligations: normalization_obligations1 } = - super::normalize(selcx, param_env, ObligationCause::dummy(), subject); + let InferOk { value: subject, obligations: normalization_obligations1 } = selcx + .infcx() + .partially_normalize_associated_types_in(ObligationCause::dummy(), param_env, subject); let predicates = selcx.tcx().predicates_of(impl_def_id); let predicates = predicates.instantiate(selcx.tcx(), impl_substs); - let Normalized { value: predicates, obligations: normalization_obligations2 } = - super::normalize(selcx, param_env, ObligationCause::dummy(), predicates); + let InferOk { value: predicates, obligations: normalization_obligations2 } = selcx + .infcx() + .partially_normalize_associated_types_in(ObligationCause::dummy(), param_env, predicates); let impl_obligations = super::predicates_for_generics(|_, _| ObligationCause::dummy(), param_env, predicates); |
