about summary refs log tree commit diff
path: root/compiler/rustc_next_trait_solver/src
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2025-01-14 17:54:53 +0000
committerMichael Goulet <michael@errs.io>2025-01-14 17:59:54 +0000
commitbf545ce2fee9f1fef0fd9e63e46b5aab5de61465 (patch)
tree7b1423cdd6d7222976a0fb7038845c7554c7ee8d /compiler/rustc_next_trait_solver/src
parent2ae9916816a448fcaab3b2da461de754eda0055a (diff)
downloadrust-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.rs8
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,