Skip to content

Commit 3aa9902

Browse files
committed
Fix #66295
1 parent 4787e97 commit 3aa9902

File tree

3 files changed

+26
-13
lines changed

3 files changed

+26
-13
lines changed

src/librustc_lint/unused.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use syntax::print::pprust;
1717
use syntax::symbol::{kw, sym};
1818
use syntax::symbol::Symbol;
1919
use syntax::util::parser;
20-
use syntax_pos::{Span, BytePos};
20+
use syntax_pos::{MultiSpan, Span, BytePos};
2121

2222
use log::debug;
2323

@@ -355,7 +355,11 @@ impl UnusedParens {
355355
match value.kind {
356356
ast::ExprKind::Paren(ref inner) => {
357357
if !Self::is_expr_parens_necessary(inner, followed_by_block) &&
358-
value.attrs.is_empty() {
358+
value.attrs.is_empty() &&
359+
!MultiSpan::from(value.span).primary_span()
360+
.map(|span| span.from_expansion())
361+
.unwrap_or(false)
362+
{
359363
let expr_text = if let Ok(snippet) = cx.sess().source_map()
360364
.span_to_snippet(value.span) {
361365
snippet

src/test/ui/lint/lint-unnecessary-parens.rs

+9
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ fn passes_unused_parens_lint() -> &'static (dyn Trait) {
2525
panic!()
2626
}
2727

28+
macro_rules! baz {
29+
($($foo:expr),+) => {
30+
($($foo),*)
31+
}
32+
}
33+
2834
fn main() {
2935
foo();
3036
bar((true)); //~ ERROR unnecessary parentheses around function argument
@@ -55,4 +61,7 @@ fn main() {
5561
let mut _a = (0); //~ ERROR unnecessary parentheses around assigned value
5662
_a = (0); //~ ERROR unnecessary parentheses around assigned value
5763
_a += (1); //~ ERROR unnecessary parentheses around assigned value
64+
65+
let _a = baz!(3, 4);
66+
let _b = baz!(3);
5867
}

src/test/ui/lint/lint-unnecessary-parens.stderr

+11-11
Original file line numberDiff line numberDiff line change
@@ -23,69 +23,69 @@ LL | fn unused_parens_around_return_type() -> (u32) {
2323
| ^^^^^ help: remove these parentheses
2424

2525
error: unnecessary parentheses around function argument
26-
--> $DIR/lint-unnecessary-parens.rs:30:9
26+
--> $DIR/lint-unnecessary-parens.rs:36:9
2727
|
2828
LL | bar((true));
2929
| ^^^^^^ help: remove these parentheses
3030

3131
error: unnecessary parentheses around `if` condition
32-
--> $DIR/lint-unnecessary-parens.rs:32:8
32+
--> $DIR/lint-unnecessary-parens.rs:38:8
3333
|
3434
LL | if (true) {}
3535
| ^^^^^^ help: remove these parentheses
3636

3737
error: unnecessary parentheses around `while` condition
38-
--> $DIR/lint-unnecessary-parens.rs:33:11
38+
--> $DIR/lint-unnecessary-parens.rs:39:11
3939
|
4040
LL | while (true) {}
4141
| ^^^^^^ help: remove these parentheses
4242

4343
warning: denote infinite loops with `loop { ... }`
44-
--> $DIR/lint-unnecessary-parens.rs:33:5
44+
--> $DIR/lint-unnecessary-parens.rs:39:5
4545
|
4646
LL | while (true) {}
4747
| ^^^^^^^^^^^^ help: use `loop`
4848
|
4949
= note: `#[warn(while_true)]` on by default
5050

5151
error: unnecessary parentheses around `match` head expression
52-
--> $DIR/lint-unnecessary-parens.rs:35:11
52+
--> $DIR/lint-unnecessary-parens.rs:41:11
5353
|
5454
LL | match (true) {
5555
| ^^^^^^ help: remove these parentheses
5656

5757
error: unnecessary parentheses around `let` head expression
58-
--> $DIR/lint-unnecessary-parens.rs:38:16
58+
--> $DIR/lint-unnecessary-parens.rs:44:16
5959
|
6060
LL | if let 1 = (1) {}
6161
| ^^^ help: remove these parentheses
6262

6363
error: unnecessary parentheses around `let` head expression
64-
--> $DIR/lint-unnecessary-parens.rs:39:19
64+
--> $DIR/lint-unnecessary-parens.rs:45:19
6565
|
6666
LL | while let 1 = (2) {}
6767
| ^^^ help: remove these parentheses
6868

6969
error: unnecessary parentheses around method argument
70-
--> $DIR/lint-unnecessary-parens.rs:53:24
70+
--> $DIR/lint-unnecessary-parens.rs:59:24
7171
|
7272
LL | X { y: false }.foo((true));
7373
| ^^^^^^ help: remove these parentheses
7474

7575
error: unnecessary parentheses around assigned value
76-
--> $DIR/lint-unnecessary-parens.rs:55:18
76+
--> $DIR/lint-unnecessary-parens.rs:61:18
7777
|
7878
LL | let mut _a = (0);
7979
| ^^^ help: remove these parentheses
8080

8181
error: unnecessary parentheses around assigned value
82-
--> $DIR/lint-unnecessary-parens.rs:56:10
82+
--> $DIR/lint-unnecessary-parens.rs:62:10
8383
|
8484
LL | _a = (0);
8585
| ^^^ help: remove these parentheses
8686

8787
error: unnecessary parentheses around assigned value
88-
--> $DIR/lint-unnecessary-parens.rs:57:11
88+
--> $DIR/lint-unnecessary-parens.rs:63:11
8989
|
9090
LL | _a += (1);
9191
| ^^^ help: remove these parentheses

0 commit comments

Comments
 (0)