Clear nested candidates in select if certainty is yes

This commit is contained in:
Michael Goulet
2025-06-02 18:00:37 +00:00
parent 076ec59ff1
commit dcf22aa7cb

View File

@@ -10,6 +10,7 @@ use rustc_infer::traits::{
use rustc_macros::extension;
use rustc_middle::{bug, span_bug};
use rustc_span::Span;
use thin_vec::ThinVec;
use crate::solve::inspect::{self, ProofTreeInferCtxtExt};
@@ -147,7 +148,7 @@ fn to_selection<'tcx>(
}
let (nested, impl_args) = cand.instantiate_nested_goals_and_opt_impl_args(span);
let nested = nested
let mut nested: ThinVec<_> = nested
.into_iter()
.map(|nested| {
Obligation::new(
@@ -159,6 +160,10 @@ fn to_selection<'tcx>(
})
.collect();
if let Ok(Certainty::Yes) = cand.result() {
nested.clear();
}
Some(match cand.kind() {
ProbeKind::TraitCandidate { source, result: _ } => match source {
CandidateSource::Impl(impl_def_id) => {