parent
655487b596
commit
5bf268d0b0
@ -239,7 +239,15 @@ fn is_useful(cx: &MatchCheckCtxt, m: &matrix, v: &[@Pat]) -> useful {
|
|||||||
return not_useful
|
return not_useful
|
||||||
}
|
}
|
||||||
let real_pat = match m.iter().find(|r| r.get(0).id != 0) {
|
let real_pat = match m.iter().find(|r| r.get(0).id != 0) {
|
||||||
Some(r) => *r.get(0), None => v[0]
|
Some(r) => {
|
||||||
|
match r.get(0).node {
|
||||||
|
// An arm of the form `ref x @ sub_pat` has type
|
||||||
|
// `sub_pat`, not `&sub_pat` as `x` itself does.
|
||||||
|
PatIdent(BindByRef(_), _, Some(sub)) => sub,
|
||||||
|
_ => *r.get(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None => v[0]
|
||||||
};
|
};
|
||||||
let left_ty = if real_pat.id == 0 { ty::mk_nil() }
|
let left_ty = if real_pat.id == 0 { ty::mk_nil() }
|
||||||
else { ty::node_id_to_type(cx.tcx, real_pat.id) };
|
else { ty::node_id_to_type(cx.tcx, real_pat.id) };
|
||||||
|
@ -9,8 +9,9 @@
|
|||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let _x = match Some(1) {
|
let x = match Some(1) {
|
||||||
_y @ Some(_) => 1,
|
ref _y @ Some(_) => 1,
|
||||||
None => 2,
|
None => 2,
|
||||||
};
|
};
|
||||||
|
assert_eq!(x, 1);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user