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-06-26 20:15:30 -0400
committerGitHub <noreply@github.com>2025-06-26 20:15:30 -0400
commitcb0b62121c401909fc946569825c5c99229e9f44 (patch)
tree0d602e0ae1e8c9540b058bd0d007d686ae402044 /compiler/rustc_next_trait_solver/src
parent434e3e5d454c3a8f92c240cb2709dc2ffb6af537 (diff)
parent174cb47a468fb19a3a41895f994eef2f8e7cdd22 (diff)
downloadrust-cb0b62121c401909fc946569825c5c99229e9f44.tar.gz
rust-cb0b62121c401909fc946569825c5c99229e9f44.zip
Rollup merge of #143073 - yotamofek:pr/fix-let-chains-fixmes, r=compiler-errors
Fix some fixmes that were waiting for let chains

Was inspired by looking at rust-lang/rust#143066 and spotting two fixmes that were missed, so... r? `@compiler-errors`  😅

Yay, let chains!
Diffstat (limited to 'compiler/rustc_next_trait_solver/src')
-rw-r--r--compiler/rustc_next_trait_solver/src/solve/assembly/structural_traits.rs17
1 files changed, 8 insertions, 9 deletions
diff --git a/compiler/rustc_next_trait_solver/src/solve/assembly/structural_traits.rs b/compiler/rustc_next_trait_solver/src/solve/assembly/structural_traits.rs
index f39d3226009..4c649225359 100644
--- a/compiler/rustc_next_trait_solver/src/solve/assembly/structural_traits.rs
+++ b/compiler/rustc_next_trait_solver/src/solve/assembly/structural_traits.rs
@@ -326,11 +326,10 @@ pub(in crate::solve) fn extract_tupled_inputs_and_output_from_callable<I: Intern
             let kind_ty = args.kind_ty();
             let sig = args.coroutine_closure_sig().skip_binder();
 
-            // FIXME: let_chains
-            let kind = kind_ty.to_opt_closure_kind();
-            let coroutine_ty = if kind.is_some() && !args.tupled_upvars_ty().is_ty_var() {
-                let closure_kind = kind.unwrap();
-                if !closure_kind.extends(goal_kind) {
+            let coroutine_ty = if let Some(kind) = kind_ty.to_opt_closure_kind()
+                && !args.tupled_upvars_ty().is_ty_var()
+            {
+                if !kind.extends(goal_kind) {
                     return Err(NoSolution);
                 }
 
@@ -435,10 +434,10 @@ pub(in crate::solve) fn extract_tupled_inputs_and_output_from_async_callable<I:
             let sig = args.coroutine_closure_sig().skip_binder();
             let mut nested = vec![];
 
-            // FIXME: let_chains
-            let kind = kind_ty.to_opt_closure_kind();
-            let coroutine_ty = if kind.is_some() && !args.tupled_upvars_ty().is_ty_var() {
-                if !kind.unwrap().extends(goal_kind) {
+            let coroutine_ty = if let Some(kind) = kind_ty.to_opt_closure_kind()
+                && !args.tupled_upvars_ty().is_ty_var()
+            {
+                if !kind.extends(goal_kind) {
                     return Err(NoSolution);
                 }