[clang] [clang][dataflow] Fully support Environment construction for Stmt analysis. (PR #91616)

via cfe-commits cfe-commits at lists.llvm.org
Wed May 15 12:01:07 PDT 2024


================
@@ -403,4 +405,35 @@ TEST_F(EnvironmentTest,
               Contains(Member));
 }
 
+TEST_F(EnvironmentTest, Stmt) {
+  using namespace ast_matchers;
+
+  std::string Code = R"cc(
+      struct S {int i;};
+      void foo() {
+        S AnS = S{1};
+      }
----------------
martinboehme wrote:

> A variable declaration outside a function doesn't actually exist within a Stmt, nor is it a Stmt.

But isn't this the use case for which you're making the change in this PR?

I don't see why you need the variable declaration to be a `Stmt` though. In any case, you're only analyzing the initializer, not the `DeclStmt` itself. Instead of searching for the `DeclStmt`, you could search for the `VarDecl` and then initialize the `Environment` with the `getInit()` of that `VarDecl`. This wouldn't make the test any more complicated and would be equivalent to what you're testing here?

https://github.com/llvm/llvm-project/pull/91616


More information about the cfe-commits mailing list