about summary refs log tree commit diff
path: root/compiler/rustc_next_trait_solver/src
diff options
context:
space:
mode:
authorDeadbeef <ent3rm4n@gmail.com>2024-06-26 16:36:42 +0000
committerDeadbeef <ent3rm4n@gmail.com>2024-06-28 15:44:20 +0000
commit65a0bee0b77bad05c1bf29bd2dd855e554a9eaf5 (patch)
treeb3ef6f32a2b9602222ab6a4b6b2d967267b17d3d /compiler/rustc_next_trait_solver/src
parent8b2fac9612e3840f9736bed31502b3b91ba01a08 (diff)
address review comments
Diffstat (limited to 'compiler/rustc_next_trait_solver/src')
-rw-r--r--compiler/rustc_next_trait_solver/src/solve/assembly/mod.rs6
-rw-r--r--compiler/rustc_next_trait_solver/src/solve/normalizes_to/mod.rs8
-rw-r--r--compiler/rustc_next_trait_solver/src/solve/trait_goals.rs4
3 files changed, 11 insertions, 7 deletions
diff --git a/compiler/rustc_next_trait_solver/src/solve/assembly/mod.rs b/compiler/rustc_next_trait_solver/src/solve/assembly/mod.rs
index 8d57c3d9af0..6ee684605ac 100644
--- a/compiler/rustc_next_trait_solver/src/solve/assembly/mod.rs
+++ b/compiler/rustc_next_trait_solver/src/solve/assembly/mod.rs
@@ -270,7 +270,7 @@ where
         goal: Goal<I, Self>,
     ) -> Vec<Candidate<I>>;
 
-    fn consider_builtin_effects_min_candidate(
+    fn consider_builtin_effects_intersection_candidate(
         ecx: &mut EvalCtxt<'_, D>,
         goal: Goal<I, Self>,
     ) -> Result<Candidate<I>, NoSolution>;
@@ -425,8 +425,8 @@ where
             G::consider_builtin_destruct_candidate(self, goal)
         } else if cx.is_lang_item(trait_def_id, TraitSolverLangItem::TransmuteTrait) {
             G::consider_builtin_transmute_candidate(self, goal)
-        } else if tcx.is_lang_item(trait_def_id, TraitSolverLangItem::EffectsMin) {
-            G::consider_builtin_effects_min_candidate(self, goal)
+        } else if cx.is_lang_item(trait_def_id, TraitSolverLangItem::EffectsIntersection) {
+            G::consider_builtin_effects_intersection_candidate(self, goal)
         } else {
             Err(NoSolution)
         };
diff --git a/compiler/rustc_next_trait_solver/src/solve/normalizes_to/mod.rs b/compiler/rustc_next_trait_solver/src/solve/normalizes_to/mod.rs
index 7a81c210c5d..9275bcc8e97 100644
--- a/compiler/rustc_next_trait_solver/src/solve/normalizes_to/mod.rs
+++ b/compiler/rustc_next_trait_solver/src/solve/normalizes_to/mod.rs
@@ -865,7 +865,7 @@ where
         panic!("`BikeshedIntrinsicFrom` does not have an associated type: {:?}", goal)
     }
 
-    fn consider_builtin_effects_min_candidate(
+    fn consider_builtin_effects_intersection_candidate(
         ecx: &mut EvalCtxt<'_, D>,
         goal: Goal<I, Self>,
     ) -> Result<Candidate<I>, NoSolution> {
@@ -903,11 +903,15 @@ where
                 let mut min = ty::EffectKind::Maybe;
 
                 for ty in types.iter() {
+                    // We can't find the intersection if the types used are generic.
+                    //
+                    // FIXME(effects) do we want to look at where clauses to get some
+                    // clue for the case where generic types are being used?
                     let Some(kind) = ty::EffectKind::try_from_ty(cx, ty) else {
                         return Err(NoSolution);
                     };
 
-                    let Some(result) = ty::EffectKind::min(min, kind) else {
+                    let Some(result) = ty::EffectKind::intersection(min, kind) else {
                         return Err(NoSolution);
                     };
 
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 08ed729b144..f5832f7e5b4 100644
--- a/compiler/rustc_next_trait_solver/src/solve/trait_goals.rs
+++ b/compiler/rustc_next_trait_solver/src/solve/trait_goals.rs
@@ -703,7 +703,7 @@ where
         })
     }
 
-    fn consider_builtin_effects_min_candidate(
+    fn consider_builtin_effects_intersection_candidate(
         ecx: &mut EvalCtxt<'_, D>,
         goal: Goal<I, Self>,
     ) -> Result<Candidate<I>, NoSolution> {
@@ -732,7 +732,7 @@ where
                     return Err(NoSolution);
                 };
 
-                let Some(result) = ty::EffectKind::min(min, kind) else {
+                let Some(result) = ty::EffectKind::intersection(min, kind) else {
                     return Err(NoSolution);
                 };