diff options
| author | Michael Goulet <michael@errs.io> | 2025-01-14 17:54:53 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2025-01-14 17:59:54 +0000 |
| commit | bf545ce2fee9f1fef0fd9e63e46b5aab5de61465 (patch) | |
| tree | 7b1423cdd6d7222976a0fb7038845c7554c7ee8d /compiler/rustc_next_trait_solver/src | |
| parent | 2ae9916816a448fcaab3b2da461de754eda0055a (diff) | |
| download | rust-bf545ce2fee9f1fef0fd9e63e46b5aab5de61465.tar.gz rust-bf545ce2fee9f1fef0fd9e63e46b5aab5de61465.zip | |
Prefer lower TraitUpcasting candidates
Diffstat (limited to 'compiler/rustc_next_trait_solver/src')
| -rw-r--r-- | compiler/rustc_next_trait_solver/src/solve/trait_goals.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/rustc_next_trait_solver/src/solve/trait_goals.rs b/compiler/rustc_next_trait_solver/src/solve/trait_goals.rs index d68fca60829..f4d7c3ce76c 100644 --- a/compiler/rustc_next_trait_solver/src/solve/trait_goals.rs +++ b/compiler/rustc_next_trait_solver/src/solve/trait_goals.rs @@ -741,12 +741,14 @@ where a_data.principal(), )); } else if let Some(a_principal) = a_data.principal() { - for new_a_principal in - elaborate::supertraits(self.cx(), a_principal.with_self_ty(cx, a_ty)).skip(1) + for (idx, new_a_principal) in + elaborate::supertraits(self.cx(), a_principal.with_self_ty(cx, a_ty)) + .enumerate() + .skip(1) { responses.extend(self.consider_builtin_upcast_to_principal( goal, - CandidateSource::BuiltinImpl(BuiltinImplSource::TraitUpcasting), + CandidateSource::BuiltinImpl(BuiltinImplSource::TraitUpcasting(idx)), a_data, a_region, b_data, |
