diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-08-03 01:31:21 +0900 |
|---|---|---|
| committer | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-08-03 01:34:18 +0900 |
| commit | 2e7ba785b34b040154761d42bdd4a208707e0d29 (patch) | |
| tree | 3f6f477e17f873fc927e846eddb836b03ff182a3 | |
| parent | 86d0b9cbd0242b06a747b14903dfbd4fda911a1d (diff) | |
| download | rust-2e7ba785b34b040154761d42bdd4a208707e0d29.tar.gz rust-2e7ba785b34b040154761d42bdd4a208707e0d29.zip | |
Recover strictness for `yield`
| -rw-r--r-- | src/librustc_lint/unused.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/lint/issue-74883-unused-paren-baren-yield.rs | 18 | ||||
| -rw-r--r-- | src/test/ui/lint/issue-74883-unused-paren-baren-yield.stderr | 48 |
3 files changed, 60 insertions, 9 deletions
diff --git a/src/librustc_lint/unused.rs b/src/librustc_lint/unused.rs index ee27b358449..a33f9206035 100644 --- a/src/librustc_lint/unused.rs +++ b/src/librustc_lint/unused.rs @@ -422,10 +422,9 @@ trait UnusedDelimLint { lhs_needs_parens || (followed_by_block && match inner.kind { - ExprKind::Ret(_) | ExprKind::Break(..) => true, + ExprKind::Ret(_) | ExprKind::Break(..) | ExprKind::Yield(..) => true, _ => parser::contains_exterior_struct_lit(&inner), }) - || if let ExprKind::Yield(..) = inner.kind { true } else { false } } fn emit_unused_delims_expr( diff --git a/src/test/ui/lint/issue-74883-unused-paren-baren-yield.rs b/src/test/ui/lint/issue-74883-unused-paren-baren-yield.rs index 3d9eebe65c0..02182ec2993 100644 --- a/src/test/ui/lint/issue-74883-unused-paren-baren-yield.rs +++ b/src/test/ui/lint/issue-74883-unused-paren-baren-yield.rs @@ -9,9 +9,25 @@ fn main() { let mut x = |_| { while let Some(_) = (yield) {} while let Some(_) = {yield} {} + // Only warn these cases while let Some(_) = ({yield}) {} //~ ERROR: unnecessary parentheses - while let Some(_) = {(yield)} {} //~ ERROR: unnecessary braces + while let Some(_) = ((yield)) {} //~ ERROR: unnecessary parentheses + {{yield}}; //~ ERROR: unnecessary braces + {( yield )}; //~ ERROR: unnecessary parentheses + + // FIXME: Reduce duplicate warnings. + // Perhaps we should tweak checks in `BlockRetValue`? + while let Some(_) = {(yield)} {} + //~^ ERROR: unnecessary braces + //~| ERROR: unnecessary parentheses + while let Some(_) = {{yield}} {} + //~^ ERROR: unnecessary braces + //~| ERROR: unnecessary braces + + // FIXME: It'd be great if we could also warn them. + ((yield)); + ({ yield }); }; let _ = Pin::new(&mut x).resume(Some(5)); } diff --git a/src/test/ui/lint/issue-74883-unused-paren-baren-yield.stderr b/src/test/ui/lint/issue-74883-unused-paren-baren-yield.stderr index fab22e24d50..267cc9e031a 100644 --- a/src/test/ui/lint/issue-74883-unused-paren-baren-yield.stderr +++ b/src/test/ui/lint/issue-74883-unused-paren-baren-yield.stderr @@ -1,5 +1,5 @@ error: unnecessary parentheses around `let` scrutinee expression - --> $DIR/issue-74883-unused-paren-baren-yield.rs:13:29 + --> $DIR/issue-74883-unused-paren-baren-yield.rs:14:29 | LL | while let Some(_) = ({yield}) {} | ^^^^^^^^^ help: remove these parentheses @@ -10,11 +10,17 @@ note: the lint level is defined here LL | #![deny(unused_braces, unused_parens)] | ^^^^^^^^^^^^^ -error: unnecessary braces around `let` scrutinee expression - --> $DIR/issue-74883-unused-paren-baren-yield.rs:14:29 +error: unnecessary parentheses around `let` scrutinee expression + --> $DIR/issue-74883-unused-paren-baren-yield.rs:15:29 | -LL | while let Some(_) = {(yield)} {} - | ^^^^^^^^^ help: remove these braces +LL | while let Some(_) = ((yield)) {} + | ^^^^^^^^^ help: remove these parentheses + +error: unnecessary braces around block return value + --> $DIR/issue-74883-unused-paren-baren-yield.rs:16:10 + | +LL | {{yield}}; + | ^^^^^^^ help: remove these braces | note: the lint level is defined here --> $DIR/issue-74883-unused-paren-baren-yield.rs:3:9 @@ -22,5 +28,35 @@ note: the lint level is defined here LL | #![deny(unused_braces, unused_parens)] | ^^^^^^^^^^^^^ -error: aborting due to 2 previous errors +error: unnecessary parentheses around block return value + --> $DIR/issue-74883-unused-paren-baren-yield.rs:17:10 + | +LL | {( yield )}; + | ^^^^^^^^^ help: remove these parentheses + +error: unnecessary braces around `let` scrutinee expression + --> $DIR/issue-74883-unused-paren-baren-yield.rs:21:29 + | +LL | while let Some(_) = {(yield)} {} + | ^^^^^^^^^ help: remove these braces + +error: unnecessary parentheses around block return value + --> $DIR/issue-74883-unused-paren-baren-yield.rs:21:30 + | +LL | while let Some(_) = {(yield)} {} + | ^^^^^^^ help: remove these parentheses + +error: unnecessary braces around `let` scrutinee expression + --> $DIR/issue-74883-unused-paren-baren-yield.rs:24:29 + | +LL | while let Some(_) = {{yield}} {} + | ^^^^^^^^^ help: remove these braces + +error: unnecessary braces around block return value + --> $DIR/issue-74883-unused-paren-baren-yield.rs:24:30 + | +LL | while let Some(_) = {{yield}} {} + | ^^^^^^^ help: remove these braces + +error: aborting due to 8 previous errors |
