diff options
| author | bors <bors@rust-lang.org> | 2023-03-22 05:33:18 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-03-22 05:33:18 +0000 |
| commit | 9bdb4881c7e6061fa8acdbb3ddfcd2dd7e11cc89 (patch) | |
| tree | c59f7768d8b6601fa8f8cda2ccbed52cf652e3dd /compiler/rustc_const_eval/src/transform | |
| parent | 5fa73a75ce94faf1d1008ec96c043134ef0df427 (diff) | |
| parent | b8541eb76769798cc34908dc815cc17b6a7a91bc (diff) | |
| download | rust-9bdb4881c7e6061fa8acdbb3ddfcd2dd7e11cc89.tar.gz rust-9bdb4881c7e6061fa8acdbb3ddfcd2dd7e11cc89.zip | |
Auto merge of #109119 - lcnr:trait-system-cleanup, r=compiler-errors
a general type system cleanup removes the helper functions `traits::fully_solve_X` as they add more complexity then they are worth. It's confusing which of these helpers should be used in which context. changes the way we deal with overflow to always add depth in `evaluate_predicates_recursively`. It may make sense to actually fully transition to not have `recursion_depth` on obligations but that's probably a bit too much for this PR. also removes some other small - and imo unnecessary - helpers. r? types
Diffstat (limited to 'compiler/rustc_const_eval/src/transform')
| -rw-r--r-- | compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs b/compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs index bb4b7ad50b8..6758cba2eed 100644 --- a/compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs +++ b/compiler/rustc_const_eval/src/transform/check_consts/qualifs.rs @@ -9,7 +9,7 @@ use rustc_middle::mir; use rustc_middle::mir::*; use rustc_middle::ty::{self, subst::SubstsRef, AdtDef, Ty}; use rustc_trait_selection::traits::{ - self, ImplSource, Obligation, ObligationCause, SelectionContext, + self, ImplSource, Obligation, ObligationCause, ObligationCtxt, SelectionContext, }; use super::ConstCx; @@ -184,7 +184,10 @@ impl Qualif for NeedsNonConstDrop { } // If we had any errors, then it's bad - !traits::fully_solve_obligations(&infcx, impl_src.nested_obligations()).is_empty() + let ocx = ObligationCtxt::new(&infcx); + ocx.register_obligations(impl_src.nested_obligations()); + let errors = ocx.select_all_or_error(); + !errors.is_empty() } fn in_adt_inherently<'tcx>( |
