<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Hi all,<br>
I am having problems walking through the syntax tree of a simple header file. With llvm 4.0.1 everything works as expected but<span style="font-size: 12pt;"> after upgrading to 7.0.0 I notice that just a small number of all declarations in the AST are being
 visited. </span></p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Running a simple ASTFrontendAction (like the one from this article - <a href="https://clang.llvm.org/docs/RAVFrontendAction.html" class="OWAAutoLink" id="LPlnk818952" previewremoved="true">https://clang.llvm.org/docs/RAVFrontendAction.html</a> )
 in HandleTranslationUnit() -<br>
<br>
</p>
<div>    virtual void HandleTranslationUnit(ASTContext &Context) {<br>
        Decl* tu = Context.getTranslationUnitDecl();<br>
        Visitor.TraverseDecl(tu);<br>
    }</div>
<div><br>
</div>
<div>when I dump the *tu* variable I get a lot smaller dump with 7.0.0. After investigating further I updated TraverseDeclContextHelper() method in order to print the size of decls() container for every DeclContext we visit:<br>
<br>
<div>template <typename Derived><br>
bool RecursiveASTVisitor<Derived>::TraverseDeclContextHelper(DeclContext *DC) {<br>
  if (!DC)<br>
    return true;<br>
<br>
  int childSize = 0; // my code<br>
<br>
  for (auto *Child : DC->decls()) {<br>
    childSize++; // my code<br>
    if (!canIgnoreChildDeclWhileTraversingDeclContext(Child))<br>
        TRY_TO(TraverseDecl(Child));<br>
  }<br>
<br>
  std::cout << DC->getDeclKindName() << ": " << childSize << " child declarations" << "\n"; //my code<br>
<br>
  return true;<br>
}</div>
<br>
</div>
With llvm 4.0.0 I get: 
<div><span>TranslationUnit: 20526 child declarations<br>
</span><br>
while with 7.0.0:<br>
<span>TranslationUnit: 486 child declarations</span></div>
<div><span></span><br>
I created a sample project that illustrates this behavior - <a href="https://github.com/tdermendjiev/clang-samples" class="OWAAutoLink" id="LPlnk291918" previewremoved="true">https://github.com/tdermendjiev/clang-samples</a> . <br>
<br>
Any help tackling this issue is appreciated. Thank you.<br>
<br>
Best wishes,<br>
Teodor Dermendzhiev<br>
<p></p>
<br>
</div>
</div>
</body>
</html>