[cfe-dev] ast_matchers::MatchFinder to CallExpr that's a macro call
Peeter Joot
peeter.joot at gmail.com
Fri Apr 26 06:02:09 PDT 2013
On Fri, Apr 26, 2013 at 12:45 AM, Manuel Klimek <klimek at google.com> wrote:
> Note that the AST dump does not contain all the information there is (or
> it would be completely unreadable).
>
> Is there any way to do a very verbose dump rooted at a specific expression?
> With AST matchers, you can currently only match the "C++" names of things.
> After matching the call, you can look at the expansion location of the
> identifier that references the function (get it via the SourceManager) or
> try to directly use the Lexer's makeFileCharRange.
>
To simplify the problem, I'll hack the code in this case to use a fake
prototype, one that looks like the macro interface. Then the problem
becomes manipulating the parameters.
I see in the match test code stuff like:
const char Program[] =
"struct T { };"
"int f(int, T*, int, int);"
"void g(int x) { T t; f(x, &t, 3, 4); }";
...
EXPECT_TRUE(matches(Program,
callExpr(allOf(callee(functionDecl(hasName("f"))),
hasArgument(0, declRefExpr(to(varDecl()))),
hasArgument(1, hasType(pointsTo(
recordDecl(hasName("T"))))),
hasArgument(2, integerLiteral(equals(3))),
hasArgument(3, integerLiteral(equals(4)))))));
How would I bind the matcher to one of these parameters?
--
Peeter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130426/6d13a4d8/attachment.html>
More information about the cfe-dev
mailing list