aaron.ballman requested changes to this revision.
aaron.ballman added a reviewer: aaron.ballman.
aaron.ballman added a comment.
This revision now requires changes to proceed.
You should also regenerate the HTML matcher documentation as part of this patch.
================
Comment at: include/clang/ASTMatchers/ASTMatchers.h:3075
+///
+/// Example matches the call to f2, but not f1 or f3.
+/// (matcher = callExpr(argumentsAre(declRefExpr(), declRefExpr())))
----------------
This is a neat matcher, but I'm not certain it will work with the dynamic
matchers, which is an unfortunate divergence for clang-query.
Another concern is that this is leaking implementation details into
ASTMatchers.h rather than keeping them in ASTMatchersInternal.h.
================
Comment at: unittests/ASTMatchers/ASTMatchersTraversalTest.cpp:383
+ EXPECT_TRUE(matches("void f(int x, int y) { f(x, y); }", Call));
+ EXPECT_TRUE(notMatches("void f(int x, int y, int z) { f(x, y, z); }", Call));
+}
----------------
How does this matcher work in the presence of default arguments? e.g.,
```
void f(int a, int b = 12);
f(1);
```
Will `callExpr(argumentsAre(integerLiteral()))` match?
A similar question applies for variadic functions and functions without a
prototype (from C).
I suspect it all works fine, but some test cases would be nice.
https://reviews.llvm.org/D28260
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits