From f0637e4e185e8c3dda694004d1dfd31126ed1fbd Mon Sep 17 00:00:00 2001 From: Esteban Küber Date: Fri, 19 Feb 2021 17:00:31 -0800 Subject: Lower condition of `if` expression before it's "then" block Fix #82290, fix #82250. --- compiler/rustc_ast_lowering/src/expr.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'compiler/rustc_ast_lowering/src/expr.rs') diff --git a/compiler/rustc_ast_lowering/src/expr.rs b/compiler/rustc_ast_lowering/src/expr.rs index b118c0eaed4..6d44feec2c4 100644 --- a/compiler/rustc_ast_lowering/src/expr.rs +++ b/compiler/rustc_ast_lowering/src/expr.rs @@ -347,8 +347,9 @@ impl<'hir> LoweringContext<'_, 'hir> { ) -> hir::ExprKind<'hir> { macro_rules! make_if { ($opt:expr) => {{ + let cond = self.lower_expr(cond); 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 { -- cgit 1.4.1-3-g733a5