aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/expr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/expr.rs')
-rw-r--r--crates/ra_hir/src/expr.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/crates/ra_hir/src/expr.rs b/crates/ra_hir/src/expr.rs
index 60d997bbe..b01d53e5c 100644
--- a/crates/ra_hir/src/expr.rs
+++ b/crates/ra_hir/src/expr.rs
@@ -215,7 +215,7 @@ pub use ra_syntax::ast::BinOp as BinaryOp;
215#[derive(Debug, Clone, Eq, PartialEq)] 215#[derive(Debug, Clone, Eq, PartialEq)]
216pub struct MatchArm { 216pub struct MatchArm {
217 pub pats: Vec<PatId>, 217 pub pats: Vec<PatId>,
218 // guard: Option<ExprId>, // TODO 218 pub guard: Option<ExprId>,
219 pub expr: ExprId, 219 pub expr: ExprId,
220} 220}
221 221
@@ -511,10 +511,12 @@ impl ExprCollector {
511 MatchArm { 511 MatchArm {
512 pats: vec![pat], 512 pats: vec![pat],
513 expr: then_branch, 513 expr: then_branch,
514 guard: None,
514 }, 515 },
515 MatchArm { 516 MatchArm {
516 pats: vec![placeholder_pat], 517 pats: vec![placeholder_pat],
517 expr: else_branch, 518 expr: else_branch,
519 guard: None,
518 }, 520 },
519 ]; 521 ];
520 self.alloc_expr( 522 self.alloc_expr(
@@ -613,6 +615,10 @@ impl ExprCollector {
613 .map(|arm| MatchArm { 615 .map(|arm| MatchArm {
614 pats: arm.pats().map(|p| self.collect_pat(p)).collect(), 616 pats: arm.pats().map(|p| self.collect_pat(p)).collect(),
615 expr: self.collect_expr_opt(arm.expr()), 617 expr: self.collect_expr_opt(arm.expr()),
618 guard: arm.guard().map(|guard| {
619 let e = guard.expr().expect("every guard should have an expr");
620 self.collect_expr(e)
621 }),
616 }) 622 })
617 .collect() 623 .collect()
618 } else { 624 } else {