diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-08-24 21:03:51 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-08-24 22:28:12 -0700 |
| commit | 5e22fb9c7f94c76e1e7e17709884198ec4ba3fcb (patch) | |
| tree | 3f8504b434daa0eea689faf3c09177ccd551d545 /src/rustc | |
| parent | c7a3d0eb5820e63225b45a2e2c8c4e9b8f658601 (diff) | |
Remove match check
Diffstat (limited to 'src/rustc')
| -rw-r--r-- | src/rustc/middle/borrowck/gather_loans.rs | 2 | ||||
| -rw-r--r-- | src/rustc/middle/check_alt.rs | 13 | ||||
| -rw-r--r-- | src/rustc/middle/liveness.rs | 2 | ||||
| -rw-r--r-- | src/rustc/middle/region.rs | 2 | ||||
| -rw-r--r-- | src/rustc/middle/trans/alt.rs | 16 | ||||
| -rw-r--r-- | src/rustc/middle/trans/base.rs | 6 | ||||
| -rw-r--r-- | src/rustc/middle/typeck/check.rs | 2 |
7 files changed, 15 insertions, 28 deletions
diff --git a/src/rustc/middle/borrowck/gather_loans.rs b/src/rustc/middle/borrowck/gather_loans.rs index 648d7f1e9b5..f289caafbc6 100644 --- a/src/rustc/middle/borrowck/gather_loans.rs +++ b/src/rustc/middle/borrowck/gather_loans.rs @@ -171,7 +171,7 @@ fn req_loans_in_expr(ex: @ast::expr, visit::visit_expr(ex, self, vt); } - ast::expr_match(ex_v, arms, _) => { + ast::expr_match(ex_v, arms) => { let cmt = self.bccx.cat_expr(ex_v); for arms.each |arm| { for arm.pats.each |pat| { diff --git a/src/rustc/middle/check_alt.rs b/src/rustc/middle/check_alt.rs index a1e3dc439a9..c78b2c8419d 100644 --- a/src/rustc/middle/check_alt.rs +++ b/src/rustc/middle/check_alt.rs @@ -24,7 +24,7 @@ fn check_crate(tcx: ty::ctxt, crate: @crate) { fn check_expr(tcx: ty::ctxt, ex: @expr, &&s: (), v: visit::vt<()>) { visit::visit_expr(ex, s, v); match ex.node { - expr_match(scrut, arms, mode) => { + expr_match(scrut, arms) => { check_arms(tcx, arms); /* Check for exhaustiveness */ // Check for empty enum, because is_useful only works on inhabited @@ -48,13 +48,10 @@ fn check_expr(tcx: ty::ctxt, ex: @expr, &&s: (), v: visit::vt<()>) { } _ => { /* We assume only enum types can be uninhabited */ } } - - if mode == alt_exhaustive { - let arms = vec::concat(vec::filter_map(arms, unguarded_pat)); - check_exhaustive(tcx, ex.span, arms); - } - } - _ => () + let arms = vec::concat(vec::filter_map(arms, unguarded_pat)); + check_exhaustive(tcx, ex.span, arms); + } + _ => () } } diff --git a/src/rustc/middle/liveness.rs b/src/rustc/middle/liveness.rs index ee8c6c2baec..c49c8f50bcd 100644 --- a/src/rustc/middle/liveness.rs +++ b/src/rustc/middle/liveness.rs @@ -1048,7 +1048,7 @@ impl Liveness { self.propagate_through_loop(expr, none, blk, succ) } - expr_match(e, arms, _) => { + expr_match(e, arms) => { // // (e) // | diff --git a/src/rustc/middle/region.rs b/src/rustc/middle/region.rs index 5b6a64ccd73..7d04840593e 100644 --- a/src/rustc/middle/region.rs +++ b/src/rustc/middle/region.rs @@ -259,7 +259,7 @@ fn resolve_expr(expr: @ast::expr, cx: ctxt, visitor: visit::vt<ctxt>) { cx.sess.intr())); new_cx.parent = some(expr.id); } - ast::expr_match(subexpr, _, _) => { + ast::expr_match(subexpr, _) => { debug!("node %d: %s", expr.id, pprust::expr_to_str(expr, cx.sess.intr())); new_cx.parent = some(expr.id); diff --git a/src/rustc/middle/trans/alt.rs b/src/rustc/middle/trans/alt.rs index b67e490863d..31a6d5658f0 100644 --- a/src/rustc/middle/trans/alt.rs +++ b/src/rustc/middle/trans/alt.rs @@ -822,16 +822,15 @@ fn trans_alt(bcx: block, alt_expr: @ast::expr, expr: @ast::expr, arms: ~[ast::arm], - mode: ast::alt_mode, dest: dest) -> block { let _icx = bcx.insn_ctxt("alt::trans_alt"); do with_scope(bcx, alt_expr.info(), ~"alt") |bcx| { - trans_alt_inner(bcx, expr, arms, mode, dest) + trans_alt_inner(bcx, expr, arms, dest) } } fn trans_alt_inner(scope_cx: block, expr: @ast::expr, arms: ~[ast::arm], - mode: ast::alt_mode, dest: dest) -> block { + dest: dest) -> block { let _icx = scope_cx.insn_ctxt("alt::trans_alt_inner"); let bcx = scope_cx, tcx = bcx.tcx(); let mut bodies = ~[], matches = ~[]; @@ -860,15 +859,7 @@ fn trans_alt_inner(scope_cx: block, expr: @ast::expr, arms: ~[ast::arm], return fail_cx.llbb; } let t = node_id_type(bcx, expr.id); - let mk_fail = match mode { - ast::alt_check => { - let fail_cx = @mut none; - // Cached fail-on-fallthrough block - some(|| mk_fail(scope_cx, expr.span, ~"non-exhaustive match failure", - fail_cx)) - } - ast::alt_exhaustive => { - let fail_cx = @mut none; + let mk_fail = { let fail_cx = @mut none; // special case for uninhabited type if ty::type_is_empty(tcx, t) { some(|| mk_fail(scope_cx, expr.span, @@ -877,7 +868,6 @@ fn trans_alt_inner(scope_cx: block, expr: @ast::expr, arms: ~[ast::arm], else { none } - } }; let mut exit_map = ~[]; let spilled = spill_if_immediate(bcx, val, t); diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs index 02f3c74972a..ab5c5a468bd 100644 --- a/src/rustc/middle/trans/base.rs +++ b/src/rustc/middle/trans/base.rs @@ -3798,8 +3798,8 @@ fn trans_expr(bcx: block, e: @ast::expr, dest: dest) -> block { ast::expr_if(cond, thn, els) => { return trans_if(bcx, cond, thn, els, dest); } - ast::expr_match(expr, arms, mode) => { - return alt::trans_alt(bcx, e, expr, arms, mode, dest); + ast::expr_match(expr, arms) => { + return alt::trans_alt(bcx, e, expr, arms, dest); } ast::expr_block(blk) => { return do with_scope(bcx, blk.info(), ~"block-expr body") |bcx| { @@ -4488,7 +4488,7 @@ fn trans_block_cleanups_(bcx: block, } } } - } + } return bcx; } diff --git a/src/rustc/middle/typeck/check.rs b/src/rustc/middle/typeck/check.rs index 9563163c706..5917574936f 100644 --- a/src/rustc/middle/typeck/check.rs +++ b/src/rustc/middle/typeck/check.rs @@ -1599,7 +1599,7 @@ fn check_expr_with_unifier(fcx: @fn_ctxt, fcx.write_ty(id, ty::mk_nil(tcx)); bot = !may_break(body); } - ast::expr_match(discrim, arms, mode) => { + ast::expr_match(discrim, arms) => { bot = alt::check_alt(fcx, expr, discrim, arms); } ast::expr_fn(proto, decl, body, cap_clause) => { |
