Skip to content

Commit

Permalink
Fix Range warning and improve tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kleimkuhler committed Oct 10, 2018
1 parent 46b07d6 commit 47014df
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 38 deletions.
8 changes: 6 additions & 2 deletions src/librustc_lint/unused.rs
Expand Up @@ -376,8 +376,12 @@ impl EarlyLintPass for UnusedParens {
}

fn check_pat(&mut self, cx: &EarlyContext, p: &ast::Pat) {
if let ast::PatKind::Paren(_) = p.node {
self.check_unused_parens_pat(cx, &p, "pattern");
use ast::PatKind::{Paren, Range};
if let Paren(ref pat) = p.node {
match pat.node {
Range(..) => {}
_ => self.check_unused_parens_pat(cx, &p, "pattern")
}
}
}

Expand Down
38 changes: 17 additions & 21 deletions src/test/ui/lint/issue-54538-unused-parens-lint.rs
Expand Up @@ -14,29 +14,25 @@
#![allow(unused_variables)]
#![warn(unused_parens)]

struct A {
field: Option<String>,
}

fn main() {
let x = 3;
match x {
(_) => {} //~ WARNING: unnecessary parentheses around pattern
(y) => {} //~ WARNING: unnecessary parentheses around pattern
(ref r) => {} //~ WARNING: unnecessary parentheses around pattern
e @ 1...2 | (e @ (3...4)) => {}
//~^ WARNING: unnecessary parentheses around pattern (3 ... 4)
//~^ WARNING: unnecessary parentheses around pattern (e @ _)
match 1 {
(_) => {} //~ WARNING: unnecessary parentheses around pattern
(y) => {} //~ WARNING: unnecessary parentheses around pattern
(ref r) => {} //~ WARNING: unnecessary parentheses around pattern
(e @ 1..=2) => {} //~ WARNING: unnecessary parentheses around outer pattern
(1..=2) => {} // Non ambiguous range pattern should not warn
e @ (3..=4) => {} // Non ambiguous range pattern should not warn
}

match &1 {
(e @ &(1...2)) => {} //~ WARNING: unnecessary parentheses around outer pattern
&(_) => {} //~ WARNING: unnecessary parentheses around pattern
e @ &(1...2) => {} // Ambiguous range pattern should not warn
&(1..=2) => {} // Ambiguous range pattern should not warn
}

let field = "foo".to_string();
let x: Option<A> = Some(A { field: Some(field) });
match x {
Some(A {
field: (ref a @ Some(_)),
//~^ WARNING: unnecessary parentheses around pattern
..
}) => {}
_ => {}
match &1 {
e @ &(1...2) | e @ &(3..=4) => {} // Complex ambiguous pattern should not warn
&_ => {}
}
}
30 changes: 15 additions & 15 deletions src/test/ui/lint/issue-54538-unused-parens-lint.stderr
@@ -1,7 +1,7 @@
warning: unnecessary parentheses around pattern
--> $DIR/issue-54538-unused-parens-lint.rs:24:9
--> $DIR/issue-54538-unused-parens-lint.rs:19:9
|
LL | (_) => {} //~ WARNING: unnecessary parentheses around pattern
LL | (_) => {} //~ WARNING: unnecessary parentheses around pattern
| ^^^ help: remove these parentheses
|
note: lint level defined here
Expand All @@ -11,32 +11,32 @@ LL | #![warn(unused_parens)]
| ^^^^^^^^^^^^^

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

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

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

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

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

0 comments on commit 47014df

Please sign in to comment.