diff options
| author | varkor <github@varkor.com> | 2018-10-17 23:51:01 +0100 |
|---|---|---|
| committer | varkor <github@varkor.com> | 2018-10-17 23:51:01 +0100 |
| commit | 0a858dc859f828af2c578bcf23418dd14c767f3c (patch) | |
| tree | 9abacf91bc6ddd2cebddc7f4d0aa8b08d02439e9 | |
| parent | 5ea8eb55cd9f4547b332f43c9f723de30187c223 (diff) | |
| download | rust-0a858dc859f828af2c578bcf23418dd14c767f3c.tar.gz rust-0a858dc859f828af2c578bcf23418dd14c767f3c.zip | |
Don't warn about parentheses on `match (return)`
| -rw-r--r-- | src/librustc_lint/unused.rs | 13 | ||||
| -rw-r--r-- | src/test/ui/lint/no-unused-parens-return-block.rs | 6 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/librustc_lint/unused.rs b/src/librustc_lint/unused.rs index 76717548521..4cf2072e792 100644 --- a/src/librustc_lint/unused.rs +++ b/src/librustc_lint/unused.rs @@ -276,10 +276,13 @@ impl UnusedParens { cx: &EarlyContext, value: &ast::Expr, msg: &str, - struct_lit_needs_parens: bool) { + followed_by_block: bool) { if let ast::ExprKind::Paren(ref inner) = value.node { - let necessary = struct_lit_needs_parens && - parser::contains_exterior_struct_lit(&inner); + let necessary = followed_by_block && if let ast::ExprKind::Ret(_) = inner.node { + true + } else { + parser::contains_exterior_struct_lit(&inner) + }; if !necessary { let pattern = pprust::expr_to_string(value); Self::remove_outer_parens(cx, value.span, &pattern, msg); @@ -343,7 +346,7 @@ impl LintPass for UnusedParens { impl EarlyLintPass for UnusedParens { fn check_expr(&mut self, cx: &EarlyContext, e: &ast::Expr) { use syntax::ast::ExprKind::*; - let (value, msg, struct_lit_needs_parens) = match e.node { + let (value, msg, followed_by_block) = match e.node { If(ref cond, ..) => (cond, "`if` condition", true), While(ref cond, ..) => (cond, "`while` condition", true), IfLet(_, ref cond, ..) => (cond, "`if let` head expression", true), @@ -380,7 +383,7 @@ impl EarlyLintPass for UnusedParens { return; } }; - self.check_unused_parens_expr(cx, &value, msg, struct_lit_needs_parens); + self.check_unused_parens_expr(cx, &value, msg, followed_by_block); } fn check_pat(&mut self, cx: &EarlyContext, p: &ast::Pat) { diff --git a/src/test/ui/lint/no-unused-parens-return-block.rs b/src/test/ui/lint/no-unused-parens-return-block.rs new file mode 100644 index 00000000000..fc8dbb743e1 --- /dev/null +++ b/src/test/ui/lint/no-unused-parens-return-block.rs @@ -0,0 +1,6 @@ +// run-pass + +fn main() { + match (return) {} // ok + if (return) {} // ok +} |
