Consider literal patterns in MATCH_OVERLAPPING_ARM
This commit is contained in:
parent
7216e83189
commit
3373ea43c0
|
@ -225,6 +225,13 @@ fn all_ranges(cx: &LateContext, arms: &[Arm]) -> Vec<SpannedRange<ConstVal>> {
|
|||
return Some(SpannedRange { span: pat.span, node: (lhs, rhs) });
|
||||
}}
|
||||
|
||||
if_let_chain! {[
|
||||
let PatLit(ref value) = pat.node,
|
||||
let Ok(value) = eval_const_expr_partial(cx.tcx, &value, ExprTypeChecked, None)
|
||||
], {
|
||||
return Some(SpannedRange { span: pat.span, node: (value.clone(), value) });
|
||||
}}
|
||||
|
||||
None
|
||||
}))
|
||||
}
|
||||
|
|
|
@ -125,12 +125,18 @@ fn overlapping() {
|
|||
}
|
||||
|
||||
match 42 {
|
||||
0 ... 5 => println!("0 ... 10"), //~ERROR
|
||||
0 ... 5 => println!("0 ... 5"), //~ERROR
|
||||
6 ... 7 => println!("6 ... 7"),
|
||||
FOO ... 11 => println!("0 ... 10"),
|
||||
_ => (),
|
||||
}
|
||||
|
||||
match 42 {
|
||||
2 => println!("2"),
|
||||
0 ... 5 => println!("0 ... 5"), //~ERROR
|
||||
_ => (),
|
||||
}
|
||||
|
||||
match 42 {
|
||||
0 ... 10 => println!("0 ... 10"),
|
||||
11 ... 50 => println!("0 ... 10"),
|
||||
|
|
Loading…
Reference in New Issue