From 0a858dc859f828af2c578bcf23418dd14c767f3c Mon Sep 17 00:00:00 2001 From: varkor Date: Wed, 17 Oct 2018 23:51:01 +0100 Subject: [PATCH 1/2] Don't warn about parentheses on `match (return)` --- src/librustc_lint/unused.rs | 13 ++++++++----- src/test/ui/lint/no-unused-parens-return-block.rs | 6 ++++++ 2 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 src/test/ui/lint/no-unused-parens-return-block.rs diff --git a/src/librustc_lint/unused.rs b/src/librustc_lint/unused.rs index 76717548521b7..4cf2072e792ca 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 0000000000000..fc8dbb743e1f3 --- /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 +} From 40bba70823466eb1458a4fd99a4f644411b4eae4 Mon Sep 17 00:00:00 2001 From: varkor Date: Thu, 18 Oct 2018 10:35:01 +0100 Subject: [PATCH 2/2] Make warnings into errors --- src/test/ui/lint/no-unused-parens-return-block.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/ui/lint/no-unused-parens-return-block.rs b/src/test/ui/lint/no-unused-parens-return-block.rs index fc8dbb743e1f3..37dc519a20401 100644 --- a/src/test/ui/lint/no-unused-parens-return-block.rs +++ b/src/test/ui/lint/no-unused-parens-return-block.rs @@ -1,5 +1,8 @@ // run-pass +#![deny(unused_parens)] +#![allow(unreachable_code)] + fn main() { match (return) {} // ok if (return) {} // ok