Skip to content

Commit 0592d13

Browse files
authored
Rollup merge of #64472 - Mark-Simulacrum:unused-parens-attr, r=varkor
Don't mark expression with attributes as not needing parentheses This is not perfectly correct as `#[attr] (5)` will still not lint, but it does seem good enough, in particular as the parentheses in that case are not unambiguously incorrect; I might personally prefer to see them for clarity. Fixes #43279.
2 parents 2e11e81 + 1d33f06 commit 0592d13

File tree

3 files changed

+25
-20
lines changed

3 files changed

+25
-20
lines changed

src/librustc_lint/unused.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,8 @@ impl UnusedParens {
370370
right_pos: Option<BytePos>) {
371371
match value.node {
372372
ast::ExprKind::Paren(ref inner) => {
373-
if !Self::is_expr_parens_necessary(inner, followed_by_block) {
373+
if !Self::is_expr_parens_necessary(inner, followed_by_block) &&
374+
value.attrs.is_empty() {
374375
let expr_text = if let Ok(snippet) = cx.sess().source_map()
375376
.span_to_snippet(value.span) {
376377
snippet

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#![feature(box_patterns)]
1+
#![feature(box_patterns, stmt_expr_attributes)]
22

33
#![feature(or_patterns)]
44
//~^ WARN the feature `or_patterns` is incomplete
@@ -17,6 +17,10 @@ fn lint_on_top_level() {
1717
let _ = |(a): u8| 0; //~ ERROR unnecessary parentheses around pattern
1818
}
1919

20+
fn _no_lint_attr() {
21+
let _x = #[allow(dead_code)] (1 + 2);
22+
}
23+
2024
// Don't lint in these cases (#64106).
2125
fn or_patterns_no_lint() {
2226
match Box::new(0) {

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

+18-18
Original file line numberDiff line numberDiff line change
@@ -49,109 +49,109 @@ LL | let _ = |(a): u8| 0;
4949
| ^^^ help: remove these parentheses
5050

5151
error: unnecessary parentheses around pattern
52-
--> $DIR/issue-54538-unused-parens-lint.rs:41:12
52+
--> $DIR/issue-54538-unused-parens-lint.rs:45:12
5353
|
5454
LL | if let (0 | 1) = 0 {}
5555
| ^^^^^^^ help: remove these parentheses
5656

5757
error: unnecessary parentheses around pattern
58-
--> $DIR/issue-54538-unused-parens-lint.rs:42:13
58+
--> $DIR/issue-54538-unused-parens-lint.rs:46:13
5959
|
6060
LL | if let ((0 | 1),) = (0,) {}
6161
| ^^^^^^^ help: remove these parentheses
6262

6363
error: unnecessary parentheses around pattern
64-
--> $DIR/issue-54538-unused-parens-lint.rs:43:13
64+
--> $DIR/issue-54538-unused-parens-lint.rs:47:13
6565
|
6666
LL | if let [(0 | 1)] = [0] {}
6767
| ^^^^^^^ help: remove these parentheses
6868

6969
error: unnecessary parentheses around pattern
70-
--> $DIR/issue-54538-unused-parens-lint.rs:44:16
70+
--> $DIR/issue-54538-unused-parens-lint.rs:48:16
7171
|
7272
LL | if let 0 | (1 | 2) = 0 {}
7373
| ^^^^^^^ help: remove these parentheses
7474

7575
error: unnecessary parentheses around pattern
76-
--> $DIR/issue-54538-unused-parens-lint.rs:46:15
76+
--> $DIR/issue-54538-unused-parens-lint.rs:50:15
7777
|
7878
LL | if let TS((0 | 1)) = TS(0) {}
7979
| ^^^^^^^ help: remove these parentheses
8080

8181
error: unnecessary parentheses around pattern
82-
--> $DIR/issue-54538-unused-parens-lint.rs:48:20
82+
--> $DIR/issue-54538-unused-parens-lint.rs:52:20
8383
|
8484
LL | if let NS { f: (0 | 1) } = (NS { f: 0 }) {}
8585
| ^^^^^^^ help: remove these parentheses
8686

8787
error: unnecessary parentheses around pattern
88-
--> $DIR/issue-54538-unused-parens-lint.rs:58:9
88+
--> $DIR/issue-54538-unused-parens-lint.rs:62:9
8989
|
9090
LL | (_) => {}
9191
| ^^^ help: remove these parentheses
9292

9393
error: unnecessary parentheses around pattern
94-
--> $DIR/issue-54538-unused-parens-lint.rs:59:9
94+
--> $DIR/issue-54538-unused-parens-lint.rs:63:9
9595
|
9696
LL | (y) => {}
9797
| ^^^ help: remove these parentheses
9898

9999
error: unnecessary parentheses around pattern
100-
--> $DIR/issue-54538-unused-parens-lint.rs:60:9
100+
--> $DIR/issue-54538-unused-parens-lint.rs:64:9
101101
|
102102
LL | (ref r) => {}
103103
| ^^^^^^^ help: remove these parentheses
104104

105105
error: unnecessary parentheses around pattern
106-
--> $DIR/issue-54538-unused-parens-lint.rs:61:9
106+
--> $DIR/issue-54538-unused-parens-lint.rs:65:9
107107
|
108108
LL | (e @ 1...2) => {}
109109
| ^^^^^^^^^^^ help: remove these parentheses
110110

111111
error: unnecessary parentheses around pattern
112-
--> $DIR/issue-54538-unused-parens-lint.rs:67:9
112+
--> $DIR/issue-54538-unused-parens-lint.rs:71:9
113113
|
114114
LL | (e @ &(1...2)) => {}
115115
| ^^^^^^^^^^^^^^ help: remove these parentheses
116116

117117
error: unnecessary parentheses around pattern
118-
--> $DIR/issue-54538-unused-parens-lint.rs:68:10
118+
--> $DIR/issue-54538-unused-parens-lint.rs:72:10
119119
|
120120
LL | &(_) => {}
121121
| ^^^ help: remove these parentheses
122122

123123
error: unnecessary parentheses around pattern
124-
--> $DIR/issue-54538-unused-parens-lint.rs:79:9
124+
--> $DIR/issue-54538-unused-parens-lint.rs:83:9
125125
|
126126
LL | (_) => {}
127127
| ^^^ help: remove these parentheses
128128

129129
error: unnecessary parentheses around pattern
130-
--> $DIR/issue-54538-unused-parens-lint.rs:80:9
130+
--> $DIR/issue-54538-unused-parens-lint.rs:84:9
131131
|
132132
LL | (y) => {}
133133
| ^^^ help: remove these parentheses
134134

135135
error: unnecessary parentheses around pattern
136-
--> $DIR/issue-54538-unused-parens-lint.rs:81:9
136+
--> $DIR/issue-54538-unused-parens-lint.rs:85:9
137137
|
138138
LL | (ref r) => {}
139139
| ^^^^^^^ help: remove these parentheses
140140

141141
error: unnecessary parentheses around pattern
142-
--> $DIR/issue-54538-unused-parens-lint.rs:82:9
142+
--> $DIR/issue-54538-unused-parens-lint.rs:86:9
143143
|
144144
LL | (e @ 1..=2) => {}
145145
| ^^^^^^^^^^^ help: remove these parentheses
146146

147147
error: unnecessary parentheses around pattern
148-
--> $DIR/issue-54538-unused-parens-lint.rs:88:9
148+
--> $DIR/issue-54538-unused-parens-lint.rs:92:9
149149
|
150150
LL | (e @ &(1..=2)) => {}
151151
| ^^^^^^^^^^^^^^ help: remove these parentheses
152152

153153
error: unnecessary parentheses around pattern
154-
--> $DIR/issue-54538-unused-parens-lint.rs:89:10
154+
--> $DIR/issue-54538-unused-parens-lint.rs:93:10
155155
|
156156
LL | &(_) => {}
157157
| ^^^ help: remove these parentheses

0 commit comments

Comments
 (0)