about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-08-06 16:15:56 +0200
committerGitHub <noreply@github.com>2022-08-06 16:15:56 +0200
commiteabf1a2e8e70854c373dbe2f942e6142c8b93f1d (patch)
tree8469d32fe952508fb95b5b132429af6bad980aae
parentb0b798e1e2dcfd09c42d1a7e7fa36280065d11ea (diff)
parent47a7a91c969ed2edd12c674ca05c1baf867f6f6f (diff)
downloadrust-eabf1a2e8e70854c373dbe2f942e6142c8b93f1d.tar.gz
rust-eabf1a2e8e70854c373dbe2f942e6142c8b93f1d.zip
Rollup merge of #100132 - compiler-errors:issue-100103, r=tmiasko
Use (actually) dummy place for let-else divergence

Fixes #100103
-rw-r--r--compiler/rustc_mir_build/src/build/matches/mod.rs2
-rw-r--r--src/test/ui/let-else/issue-100103.rs15
2 files changed, 16 insertions, 1 deletions
diff --git a/compiler/rustc_mir_build/src/build/matches/mod.rs b/compiler/rustc_mir_build/src/build/matches/mod.rs
index 58b1564cc5d..cefb5f36b6a 100644
--- a/compiler/rustc_mir_build/src/build/matches/mod.rs
+++ b/compiler/rustc_mir_build/src/build/matches/mod.rs
@@ -2334,7 +2334,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
         // This place is not really used because this destination place
         // should never be used to take values at the end of the failure
         // block.
-        let dummy_place = Place { local: RETURN_PLACE, projection: ty::List::empty() };
+        let dummy_place = self.temp(self.tcx.types.never, else_block.span);
         let failure_block;
         unpack!(
             failure_block = self.ast_block(
diff --git a/src/test/ui/let-else/issue-100103.rs b/src/test/ui/let-else/issue-100103.rs
new file mode 100644
index 00000000000..e393deab764
--- /dev/null
+++ b/src/test/ui/let-else/issue-100103.rs
@@ -0,0 +1,15 @@
+// edition:2021
+// check-pass
+
+#![feature(try_blocks)]
+#![feature(let_else)]
+
+fn main() {
+    let _: Result<i32, i32> = try {
+        let Some(x) = Some(0) else {
+            Err(1)?
+        };
+
+        x
+    };
+}