diff options
| author | Santiago Pastorino <spastorino@gmail.com> | 2021-12-03 10:11:21 -0300 |
|---|---|---|
| committer | Santiago Pastorino <spastorino@gmail.com> | 2021-12-03 10:11:21 -0300 |
| commit | 85b723c4e6c88fc5d7e1e3f6b3c86711144882b5 (patch) | |
| tree | b6c88abe2d72bfeb6ce8addf56e2d0e87ca054f7 /compiler/rustc_infer | |
| parent | 3e21768a0a3fc84befd1cbe825ae6849e9941b73 (diff) | |
| download | rust-85b723c4e6c88fc5d7e1e3f6b3c86711144882b5.tar.gz rust-85b723c4e6c88fc5d7e1e3f6b3c86711144882b5.zip | |
Revert "Auto merge of #91354 - fee1-dead:const_env, r=spastorino"
This reverts commit 18bb8c61a975fff6424cda831ace5b0404277145, reversing changes made to d9baa361902b172be716f96619b909f340802dea.
Diffstat (limited to 'compiler/rustc_infer')
| -rw-r--r-- | compiler/rustc_infer/src/traits/engine.rs | 20 | ||||
| -rw-r--r-- | compiler/rustc_infer/src/traits/mod.rs | 10 | ||||
| -rw-r--r-- | compiler/rustc_infer/src/traits/util.rs | 10 |
3 files changed, 24 insertions, 16 deletions
diff --git a/compiler/rustc_infer/src/traits/engine.rs b/compiler/rustc_infer/src/traits/engine.rs index 822f2365e02..152a395c871 100644 --- a/compiler/rustc_infer/src/traits/engine.rs +++ b/compiler/rustc_infer/src/traits/engine.rs @@ -1,8 +1,9 @@ use crate::infer::InferCtxt; use crate::traits::Obligation; use rustc_data_structures::fx::FxHashMap; +use rustc_hir as hir; use rustc_hir::def_id::DefId; -use rustc_middle::ty::{self, ToPredicate, Ty}; +use rustc_middle::ty::{self, ToPredicate, Ty, WithConstness}; use super::FulfillmentError; use super::{ObligationCause, PredicateObligation}; @@ -47,9 +48,26 @@ pub trait TraitEngine<'tcx>: 'tcx { fn select_all_or_error(&mut self, infcx: &InferCtxt<'_, 'tcx>) -> Vec<FulfillmentError<'tcx>>; + fn select_all_with_constness_or_error( + &mut self, + infcx: &InferCtxt<'_, 'tcx>, + _constness: hir::Constness, + ) -> Vec<FulfillmentError<'tcx>> { + self.select_all_or_error(infcx) + } + fn select_where_possible(&mut self, infcx: &InferCtxt<'_, 'tcx>) -> Vec<FulfillmentError<'tcx>>; + // FIXME(fee1-dead) this should not provide a default body for chalk as chalk should be updated + fn select_with_constness_where_possible( + &mut self, + infcx: &InferCtxt<'_, 'tcx>, + _constness: hir::Constness, + ) -> Vec<FulfillmentError<'tcx>> { + self.select_where_possible(infcx) + } + fn pending_obligations(&self) -> Vec<PredicateObligation<'tcx>>; fn relationships(&mut self) -> &mut FxHashMap<ty::TyVid, ty::FoundRelationships>; diff --git a/compiler/rustc_infer/src/traits/mod.rs b/compiler/rustc_infer/src/traits/mod.rs index 7e30f859dae..e8622b3c819 100644 --- a/compiler/rustc_infer/src/traits/mod.rs +++ b/compiler/rustc_infer/src/traits/mod.rs @@ -69,16 +69,6 @@ impl PredicateObligation<'tcx> { } } -impl TraitObligation<'tcx> { - /// Returns `true` if the trait predicate is considered `const` in its ParamEnv. - pub fn is_const(&self) -> bool { - match (self.predicate.skip_binder().constness, self.param_env.constness()) { - (ty::BoundConstness::ConstIfConst, hir::Constness::Const) => true, - _ => false, - } - } -} - // `PredicateObligation` is used a lot. Make sure it doesn't unintentionally get bigger. #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] static_assert_size!(PredicateObligation<'_>, 32); diff --git a/compiler/rustc_infer/src/traits/util.rs b/compiler/rustc_infer/src/traits/util.rs index 61588147364..92f74af4eb3 100644 --- a/compiler/rustc_infer/src/traits/util.rs +++ b/compiler/rustc_infer/src/traits/util.rs @@ -3,7 +3,7 @@ use smallvec::smallvec; use crate::infer::outlives::components::{push_outlives_components, Component}; use crate::traits::{Obligation, ObligationCause, PredicateObligation}; use rustc_data_structures::fx::{FxHashSet, FxIndexSet}; -use rustc_middle::ty::{self, ToPredicate, TyCtxt}; +use rustc_middle::ty::{self, ToPredicate, TyCtxt, WithConstness}; use rustc_span::symbol::Ident; use rustc_span::Span; @@ -328,8 +328,8 @@ pub fn transitive_bounds_that_define_assoc_type<'tcx>( )); for (super_predicate, _) in super_predicates.predicates { let subst_predicate = super_predicate.subst_supertrait(tcx, &trait_ref); - if let Some(binder) = subst_predicate.to_opt_poly_trait_pred() { - stack.push(binder.map_bound(|t| t.trait_ref)); + if let Some(binder) = subst_predicate.to_opt_poly_trait_ref() { + stack.push(binder.value); } } @@ -362,8 +362,8 @@ impl<'tcx, I: Iterator<Item = PredicateObligation<'tcx>>> Iterator for FilterToT fn next(&mut self) -> Option<ty::PolyTraitRef<'tcx>> { while let Some(obligation) = self.base_iterator.next() { - if let Some(data) = obligation.predicate.to_opt_poly_trait_pred() { - return Some(data.map_bound(|t| t.trait_ref)); + if let Some(data) = obligation.predicate.to_opt_poly_trait_ref() { + return Some(data.value); } } None |
