Hello all,
I am using ClangTool::buildASTs to get the ASTUnit for a given file (or
files)
to analyze them with my own RecursiveASTVisitor using the following loop.
(Here astunit is the ASTUnit returned from ClangTool::buildASTs)
for (auto decl = astuint->top_level_begin(); decl !=
astuint->top_level_end(); ++decl) {
TraverseDecl(*decl);
}
I wonder when analysing the following code why the CXXRecordDecl for
union is
missing in the AST.
static union {
int Member_1;
int Member_2;
};
int TestObject () {
return Member_1;
}
When replacing TraverseDecl(*decl); with (*decl)->dump(); I get the
following
output.
VarDecl 0x378bf50
`-CXXConstructExpr 0x378c1c0
FunctionDecl 0x378c280
`-CompoundStmt 0x378c380
`-ReturnStmt 0x378c370
`-ImplicitCastExpr 0x378c360
`-MemberExpr 0x378c338
`-DeclRefExpr 0x378c320
While the output from clang-check -ast-dump is this.
-CXXRecordDecl 0x6000bb938
>-FieldDecl 0x6000bba60
>-FieldDecl 0x6000bbab8
>-CXXConstructorDecl 0x6000bbbd0
> `-CompoundStmt 0x6000bbf10 <col:8>
`-CXXConstructorDecl 0x6000bbd28
`-ParmVarDecl 0x6000bbe70
-VarDecl 0x6000bbb50
`-CXXConstructExpr 0x6000bbf28
-IndirectFieldDecl 0x600142cc0
>-Var 0x6000bbb50
`-Field 0x6000bba60
-IndirectFieldDecl 0x600142d10
>-Var 0x6000bbb50
`-Field 0x6000bbab8
`-FunctionDecl 0x600142da0
`-CompoundStmt 0x600142f18
`-ReturnStmt 0x600142f00
`-ImplicitCastExpr 0x600142ee8
`-MemberExpr 0x600142eb0
`-DeclRefExpr 0x600142e88
Am I missing to pass a needed option when building CommonOptionsParser
object. (CommonOptionsParser::getCompilation() ist passed when creating
the ClangTool object)
Hoping that one can help me.
Frank