gccrs: Add closures to lints and error checking
authorPhilip Herron <philip.herron@embecosm.com>
Wed, 19 Oct 2022 17:30:36 +0000 (18:30 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 21 Feb 2023 11:36:39 +0000 (12:36 +0100)
gcc/rust/ChangeLog:

* checks/errors/rust-const-checker.cc (ConstChecker::visit): Visit closures properly.
* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
* checks/lints/rust-lint-marklive.h: Likewise.

gcc/rust/checks/errors/rust-const-checker.cc
gcc/rust/checks/errors/rust-unsafe-checker.cc
gcc/rust/checks/lints/rust-lint-marklive.h

index 01dc262..9161fa1 100644 (file)
@@ -383,7 +383,9 @@ ConstChecker::visit (FieldAccessExpr &expr)
 
 void
 ConstChecker::visit (ClosureExpr &expr)
-{}
+{
+  expr.get_expr ()->accept_vis (*this);
+}
 
 void
 ConstChecker::visit (BlockExpr &expr)
index 0286879..3d53474 100644 (file)
@@ -454,7 +454,9 @@ UnsafeChecker::visit (FieldAccessExpr &expr)
 
 void
 UnsafeChecker::visit (ClosureExpr &expr)
-{}
+{
+  expr.get_expr ()->accept_vis (*this);
+}
 
 void
 UnsafeChecker::visit (BlockExpr &expr)
index 4caf18c..dcc625d 100644 (file)
@@ -285,6 +285,11 @@ public:
       item->accept_vis (*this);
   }
 
+  void visit (HIR::ClosureExpr &expr) override
+  {
+    expr.get_expr ()->accept_vis (*this);
+  }
+
 private:
   std::vector<HirId> worklist;
   std::set<HirId> liveSymbols;