Skip to content

Commit

Permalink
Rollup merge of rust-lang#91956 - notriddle:notriddle/unused-parens-r…
Browse files Browse the repository at this point in the history
…ange, r=nagisa

fix(rustc_lint): better detect when parens are necessary

Fixes rust-lang#90807
  • Loading branch information
matthiaskrgr authored Dec 18, 2021
2 parents 6b62bf3 + f4a0321 commit 4891531
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 1 deletion.
5 changes: 4 additions & 1 deletion compiler/rustc_lint/src/unused.rs
Original file line number Diff line number Diff line change
Expand Up @@ -478,8 +478,11 @@ trait UnusedDelimLint {

lhs_needs_parens
|| (followed_by_block
&& match inner.kind {
&& match &inner.kind {
ExprKind::Ret(_) | ExprKind::Break(..) | ExprKind::Yield(..) => true,
ExprKind::Range(_lhs, Some(rhs), _limits) => {
matches!(rhs.kind, ExprKind::Block(..))
}
_ => parser::contains_exterior_struct_lit(&inner),
})
}
Expand Down
9 changes: 9 additions & 0 deletions src/test/ui/lint/unused/issue-90807-unused-paren-error.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// Make sure unused parens lint emit is emitted for loop and match.
// See https://github.com/rust-lang/rust/issues/90807
// and https://github.com/rust-lang/rust/pull/91956#discussion_r771647953
#![deny(unused_parens)]

fn main() {
for _ in (1..loop { break 2 }) {} //~ERROR
for _ in (1..match () { () => 2 }) {} //~ERROR
}
31 changes: 31 additions & 0 deletions src/test/ui/lint/unused/issue-90807-unused-paren-error.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
error: unnecessary parentheses around `for` iterator expression
--> $DIR/issue-90807-unused-paren-error.rs:7:14
|
LL | for _ in (1..loop { break 2 }) {}
| ^ ^
|
note: the lint level is defined here
--> $DIR/issue-90807-unused-paren-error.rs:4:9
|
LL | #![deny(unused_parens)]
| ^^^^^^^^^^^^^
help: remove these parentheses
|
LL - for _ in (1..loop { break 2 }) {}
LL + for _ in 1..loop { break 2 } {}
|

error: unnecessary parentheses around `for` iterator expression
--> $DIR/issue-90807-unused-paren-error.rs:8:14
|
LL | for _ in (1..match () { () => 2 }) {}
| ^ ^
|
help: remove these parentheses
|
LL - for _ in (1..match () { () => 2 }) {}
LL + for _ in 1..match () { () => 2 } {}
|

error: aborting due to 2 previous errors

8 changes: 8 additions & 0 deletions src/test/ui/lint/unused/issue-90807-unused-paren.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// check-pass
// Make sure unused parens lint doesn't emit a false positive.
// See https://github.com/rust-lang/rust/issues/90807
#![deny(unused_parens)]

fn main() {
for _ in (1..{ 2 }) {}
}

0 comments on commit 4891531

Please sign in to comment.