[COMMITTED 51/77] gccrs: add unused braces lint

[email protected]
Newsgroups gmane.comp.gcc.rust,gmane.comp.gcc.patches
Message-ID <[email protected]>
From: Lucas Ly Ba <[email protected]>

gcc/rust/ChangeLog:

	* checks/lints/unused/rust-unused-checker.cc (UnusedChecker::visit):
	Warn on unnecessary braces around an assigned value.
	* rust-lang.cc (grs_langhook_init_options_struct): Enable warn_unused.

gcc/testsuite/ChangeLog:

	* rust/compile/unused-braces_0.rs: New test.

Signed-off-by: Lucas Ly Ba <[email protected]>
---
 gcc/rust/checks/lints/unused/rust-unused-checker.cc | 9 +++++++++
 gcc/testsuite/rust/compile/unused-braces_0.rs       | 8 ++++++++
 2 files changed, 17 insertions(+)
 create mode 100644 gcc/testsuite/rust/compile/unused-braces_0.rs

diff --git a/gcc/rust/checks/lints/unused/rust-unused-checker.cc b/gcc/rust/checks/lints/unused/rust-unused-checker.cc
index 14e2df8dac8..2c521634d8b 100644
--- a/gcc/rust/checks/lints/unused/rust-unused-checker.cc
+++ b/gcc/rust/checks/lints/unused/rust-unused-checker.cc
@@ -330,6 +330,15 @@ UnusedChecker::visit (HIR::LetStmt &stmt)
 			 "unused doc comment");
 	break;
       }
+  if (stmt.has_init_expr ()
+      && stmt.get_init_expr ().get_expression_type ()
+	   == HIR::Expr::ExprType::Block)
+    {
+      auto &block = static_cast<HIR::BlockExpr &> (stmt.get_init_expr ());
+      if (block.get_statements ().empty () && block.has_expr ())
+	rust_warning_at (block.get_locus (), OPT_Wunused,
+			 "unnecessary braces around assigned value");
+    }
   walk (stmt);
 }
 
diff --git a/gcc/testsuite/rust/compile/unused-braces_0.rs b/gcc/testsuite/rust/compile/unused-braces_0.rs
new file mode 100644
index 00000000000..d1cd3bbdf95
--- /dev/null
+++ b/gcc/testsuite/rust/compile/unused-braces_0.rs
@@ -0,0 +1,8 @@
+// { dg-additional-options "-frust-unused-check-2.0" }
+#![feature(no_core)]
+#![no_core]
+
+pub fn foo() {
+    let _x = { 5 };
+// { dg-warning "unnecessary braces around assigned value" "" { target *-*-* } .-1 }
+}
-- 
2.50.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.