Skip to content

Commit 47014df

Browse files
committed
Fix Range warning and improve tests
1 parent 46b07d6 commit 47014df

File tree

3 files changed

+38
-38
lines changed

3 files changed

+38
-38
lines changed

src/librustc_lint/unused.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -376,8 +376,12 @@ impl EarlyLintPass for UnusedParens {
376376
}
377377

378378
fn check_pat(&mut self, cx: &EarlyContext, p: &ast::Pat) {
379-
if let ast::PatKind::Paren(_) = p.node {
380-
self.check_unused_parens_pat(cx, &p, "pattern");
379+
use ast::PatKind::{Paren, Range};
380+
if let Paren(ref pat) = p.node {
381+
match pat.node {
382+
Range(..) => {}
383+
_ => self.check_unused_parens_pat(cx, &p, "pattern")
384+
}
381385
}
382386
}
383387

src/test/ui/lint/issue-54538-unused-parens-lint.rs

+17-21
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,25 @@
1414
#![allow(unused_variables)]
1515
#![warn(unused_parens)]
1616

17-
struct A {
18-
field: Option<String>,
19-
}
20-
2117
fn main() {
22-
let x = 3;
23-
match x {
24-
(_) => {} //~ WARNING: unnecessary parentheses around pattern
25-
(y) => {} //~ WARNING: unnecessary parentheses around pattern
26-
(ref r) => {} //~ WARNING: unnecessary parentheses around pattern
27-
e @ 1...2 | (e @ (3...4)) => {}
28-
//~^ WARNING: unnecessary parentheses around pattern (3 ... 4)
29-
//~^ WARNING: unnecessary parentheses around pattern (e @ _)
18+
match 1 {
19+
(_) => {} //~ WARNING: unnecessary parentheses around pattern
20+
(y) => {} //~ WARNING: unnecessary parentheses around pattern
21+
(ref r) => {} //~ WARNING: unnecessary parentheses around pattern
22+
(e @ 1..=2) => {} //~ WARNING: unnecessary parentheses around outer pattern
23+
(1..=2) => {} // Non ambiguous range pattern should not warn
24+
e @ (3..=4) => {} // Non ambiguous range pattern should not warn
25+
}
26+
27+
match &1 {
28+
(e @ &(1...2)) => {} //~ WARNING: unnecessary parentheses around outer pattern
29+
&(_) => {} //~ WARNING: unnecessary parentheses around pattern
30+
e @ &(1...2) => {} // Ambiguous range pattern should not warn
31+
&(1..=2) => {} // Ambiguous range pattern should not warn
3032
}
3133

32-
let field = "foo".to_string();
33-
let x: Option<A> = Some(A { field: Some(field) });
34-
match x {
35-
Some(A {
36-
field: (ref a @ Some(_)),
37-
//~^ WARNING: unnecessary parentheses around pattern
38-
..
39-
}) => {}
40-
_ => {}
34+
match &1 {
35+
e @ &(1...2) | e @ &(3..=4) => {} // Complex ambiguous pattern should not warn
36+
&_ => {}
4137
}
4238
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
warning: unnecessary parentheses around pattern
2-
--> $DIR/issue-54538-unused-parens-lint.rs:24:9
2+
--> $DIR/issue-54538-unused-parens-lint.rs:19:9
33
|
4-
LL | (_) => {} //~ WARNING: unnecessary parentheses around pattern
4+
LL | (_) => {} //~ WARNING: unnecessary parentheses around pattern
55
| ^^^ help: remove these parentheses
66
|
77
note: lint level defined here
@@ -11,32 +11,32 @@ LL | #![warn(unused_parens)]
1111
| ^^^^^^^^^^^^^
1212

1313
warning: unnecessary parentheses around pattern
14-
--> $DIR/issue-54538-unused-parens-lint.rs:25:9
14+
--> $DIR/issue-54538-unused-parens-lint.rs:20:9
1515
|
16-
LL | (y) => {} //~ WARNING: unnecessary parentheses around pattern
16+
LL | (y) => {} //~ WARNING: unnecessary parentheses around pattern
1717
| ^^^ help: remove these parentheses
1818

1919
warning: unnecessary parentheses around pattern
20-
--> $DIR/issue-54538-unused-parens-lint.rs:26:9
20+
--> $DIR/issue-54538-unused-parens-lint.rs:21:9
2121
|
22-
LL | (ref r) => {} //~ WARNING: unnecessary parentheses around pattern
22+
LL | (ref r) => {} //~ WARNING: unnecessary parentheses around pattern
2323
| ^^^^^^^ help: remove these parentheses
2424

2525
warning: unnecessary parentheses around pattern
26-
--> $DIR/issue-54538-unused-parens-lint.rs:27:21
26+
--> $DIR/issue-54538-unused-parens-lint.rs:22:9
2727
|
28-
LL | e @ 1...2 | (e @ (3...4)) => {}
29-
| ^^^^^^^^^^^^^ help: remove these parentheses
28+
LL | (e @ 1..=2) => {} //~ WARNING: unnecessary parentheses around outer pattern
29+
| ^^^^^^^^^^^ help: remove these parentheses
3030

3131
warning: unnecessary parentheses around pattern
32-
--> $DIR/issue-54538-unused-parens-lint.rs:27:26
32+
--> $DIR/issue-54538-unused-parens-lint.rs:28:9
3333
|
34-
LL | e @ 1...2 | (e @ (3...4)) => {}
35-
| ^^^^^^^ help: remove these parentheses
34+
LL | (e @ &(1...2)) => {} //~ WARNING: unnecessary parentheses around outer pattern
35+
| ^^^^^^^^^^^^^^ help: remove these parentheses
3636

3737
warning: unnecessary parentheses around pattern
38-
--> $DIR/issue-54538-unused-parens-lint.rs:36:20
38+
--> $DIR/issue-54538-unused-parens-lint.rs:29:10
3939
|
40-
LL | field: (ref a @ Some(_)),
41-
| ^^^^^^^^^^^^^^^^^ help: remove these parentheses
40+
LL | &(_) => {} //~ WARNING: unnecessary parentheses around pattern
41+
| ^^^ help: remove these parentheses
4242

0 commit comments

Comments
 (0)