diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-08-06 16:15:56 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-06 16:15:56 +0200 |
| commit | eabf1a2e8e70854c373dbe2f942e6142c8b93f1d (patch) | |
| tree | 8469d32fe952508fb95b5b132429af6bad980aae | |
| parent | b0b798e1e2dcfd09c42d1a7e7fa36280065d11ea (diff) | |
| parent | 47a7a91c969ed2edd12c674ca05c1baf867f6f6f (diff) | |
| download | rust-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.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/let-else/issue-100103.rs | 15 |
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 + }; +} |
