Skip to content

Commit 7754276

Browse files
committed
fix & improve incremental for if-exprs
1 parent fb584d7 commit 7754276

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

Diff for: src/librustc/hir/lowering.rs

+11-12
Original file line numberDiff line numberDiff line change
@@ -4046,24 +4046,18 @@ impl<'a> LoweringContext<'a> {
40464046
// `_ => else_block` where `else_block` is `()` if there's `None`:
40474047
let else_pat = self.pat_wild(e.span);
40484048
let else_expr = match else_opt {
4049-
None => self.expr_tuple(e.span, hir_vec![]),
4049+
None => self.expr_block_empty(e.span),
40504050
Some(els) => match els.node {
40514051
ExprKind::IfLet(..) => {
40524052
// Wrap the `if let` expr in a block.
4053-
let blk = P(hir::Block {
4054-
stmts: hir_vec![],
4055-
span: els.span,
4056-
expr: Some(P(self.lower_expr(els))),
4057-
hir_id: self.next_id().hir_id,
4058-
rules: hir::DefaultBlock,
4059-
targeted_by_break: false,
4060-
});
4061-
P(self.expr_block(blk, ThinVec::new()))
4053+
let els = self.lower_expr(els);
4054+
let blk = self.block_all(els.span, hir_vec![], Some(P(els)));
4055+
self.expr_block(P(blk), ThinVec::new())
40624056
}
4063-
_ => P(self.lower_expr(els)),
4057+
_ => self.lower_expr(els),
40644058
}
40654059
};
4066-
let else_arm = self.arm(hir_vec![else_pat], else_expr);
4060+
let else_arm = self.arm(hir_vec![else_pat], P(else_expr));
40674061

40684062
// Lower condition:
40694063
let span_block = self.mark_span_with_reason(IfTemporary, cond.span, None);
@@ -5130,6 +5124,11 @@ impl<'a> LoweringContext<'a> {
51305124
)
51315125
}
51325126

5127+
fn expr_block_empty(&mut self, span: Span) -> hir::Expr {
5128+
let blk = self.block_all(span, hir_vec![], None);
5129+
self.expr_block(P(blk), ThinVec::new())
5130+
}
5131+
51335132
fn block_expr(&mut self, expr: P<hir::Expr>) -> hir::Block {
51345133
self.block_all(expr.span, hir::HirVec::new(), Some(expr))
51355134
}

Diff for: src/test/incremental/hashes/if_expressions.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ pub fn add_else_branch(x: bool) -> u32 {
9494
}
9595

9696
#[cfg(not(cfail1))]
97-
#[rustc_clean(cfg="cfail2", except="HirBody,typeck_tables_of")]
97+
#[rustc_clean(cfg="cfail2", except="HirBody")]
9898
#[rustc_clean(cfg="cfail3")]
9999
pub fn add_else_branch(x: bool) -> u32 {
100100
let mut ret = 1;

0 commit comments

Comments
 (0)