Rollup merge of #82308 - estebank:issue-82290, r=lcnr
Lower condition of `if` expression before it's "then" block Fix #82290, fix #82250.
This commit is contained in:
commit
269f39922b
@ -347,8 +347,9 @@ fn lower_expr_if(
|
|||||||
) -> hir::ExprKind<'hir> {
|
) -> hir::ExprKind<'hir> {
|
||||||
macro_rules! make_if {
|
macro_rules! make_if {
|
||||||
($opt:expr) => {{
|
($opt:expr) => {{
|
||||||
|
let cond = self.lower_expr(cond);
|
||||||
let then_expr = self.lower_block_expr(then);
|
let then_expr = self.lower_block_expr(then);
|
||||||
hir::ExprKind::If(self.lower_expr(cond), self.arena.alloc(then_expr), $opt)
|
hir::ExprKind::If(cond, self.arena.alloc(then_expr), $opt)
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
if let Some(rslt) = else_opt {
|
if let Some(rslt) = else_opt {
|
||||||
|
7
src/test/ui/pattern/issue-82290.rs
Normal file
7
src/test/ui/pattern/issue-82290.rs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#![feature(let_chains)] //~ WARN the feature `let_chains` is incomplete
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
if true && let x = 1 { //~ ERROR `let` expressions are not supported here
|
||||||
|
let _ = x;
|
||||||
|
}
|
||||||
|
}
|
20
src/test/ui/pattern/issue-82290.stderr
Normal file
20
src/test/ui/pattern/issue-82290.stderr
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
error: `let` expressions are not supported here
|
||||||
|
--> $DIR/issue-82290.rs:4:16
|
||||||
|
|
|
||||||
|
LL | if true && let x = 1 {
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: only supported directly in conditions of `if`- and `while`-expressions
|
||||||
|
= note: as well as when nested within `&&` and parenthesis in those conditions
|
||||||
|
|
||||||
|
warning: the feature `let_chains` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-82290.rs:1:12
|
||||||
|
|
|
||||||
|
LL | #![feature(let_chains)]
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: `#[warn(incomplete_features)]` on by default
|
||||||
|
= note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
|
||||||
|
|
||||||
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
Loading…
Reference in New Issue
Block a user