<div dir="ltr">I'm trying to understand why this checker behaves as it does. I have a project where I would like to register for PostStmt<DeclStmt>, but, in spite of the fact that this is one of the callbacks mentioned explicitly in CheckerDocumentation.cpp, it doesn't ever get invoked. <div>

<br></div><div>I just synced my LLVM and Clang trees last night.</div><div><br></div><div>Thanks much!</div><div><br></div><div><br></div><div>-----</div><div><br></div><div><div>  class TracingChecker : public Checker<check::PreStmt<DeclStmt>,</div>

<div>                                                            check::PostStmt<DeclStmt> > {</div><div>   public:</div><div><br></div><div>    void checkPreStmt(const DeclStmt *s, CheckerContext &C) const {</div>

<div>      llvm::outs() << "checkPreStmt<DeclStmt> ";</div><div>      s->dump();</div><div>      llvm::outs() << "\n\n";</div><div>    }</div><div><br></div><div>    void checkPostStmt(const DeclStmt *s, CheckerContext &C) const {</div>

<div>      llvm::outs() << "checkPreStmt<DeclStmt> ";</div><div>      s->dump();</div><div>      llvm::outs() << "\n";</div><div>    }</div><div><br></div><div>  };</div></div><div>

<br></div><div><br></div><div><br></div><div>----- input program ------</div><div><div><br></div><div>struct Thing {</div><div>  int legs;</div><div>};</div><div><br></div><div>bool test() {</div><div>  int i;</div><div>
  int j = 1;</div>
<div>  Thing thing;</div><div>  return true;</div><div>}</div></div><div><br></div><div><br></div><div><br></div><div>-------- analyzer arguments -- </div><div><br></div><div><div>~/projects/llvm/Release+Asserts/bin/clang -cc1 -analyze -analyzer-checker=debug.Trace reproduce.cc</div>

</div><div><br></div><div><br></div><div><br></div><div>------- output ----------</div><div><br></div><div><div>checkPreStmt<DeclStmt> DeclStmt 0x7fb8b402c1d8</div><div>`-VarDecl 0x7fb8b402c180 i 'int'</div>

<div><br></div><div><br></div><div>checkPreStmt<DeclStmt> DeclStmt 0x7fb8b4073e88</div><div>`-VarDecl 0x7fb8b4073e10 j 'int'</div><div>  `-IntegerLiteral 0x7fb8b4073e68 'int' 1</div><div><br></div><div>

<br></div><div>checkPreStmt<DeclStmt> DeclStmt 0x7fb8b4074278</div><div>`-VarDecl 0x7fb8b4073eb0 thing 'struct Thing'</div><div>  `-CXXConstructExpr 0x7fb8b4074248 'struct Thing' 'void (void)'</div>

<div><br></div><div><br></div></div></div>