rustc: Avoid out of bounds in check_match

Closes #12116
This commit is contained in:
Alex Crichton 2014-05-20 21:34:10 -07:00
parent 1b2dd90f1b
commit 40d3241a4a
2 changed files with 26 additions and 0 deletions

View File

@ -247,6 +247,7 @@ fn is_useful(cx: &MatchCheckCtxt, m: &matrix, v: &[@Pat]) -> useful {
_ => *r.get(0)
}
}
None if v.len() == 0 => return not_useful,
None => v[0]
};
let left_ty = if real_pat.id == 0 { ty::mk_nil() }

View File

@ -0,0 +1,25 @@
// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
enum IntList {
Cons(int, Box<IntList>),
Nil
}
fn tail(source_list: &IntList) -> IntList {
match source_list {
&Cons(val, box ref next_list) => tail(next_list),
&Cons(val, box Nil) => Cons(val, box Nil),
//~^ ERROR: unreachable pattern
_ => fail!()
}
}
fn main() {}