diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2014-02-06 21:52:24 +0000 |
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2014-02-06 21:52:24 +0000 |
| commit | 1fec3dfe430f1cb202df439ddc1e166248c2df0e (patch) | |
| tree | 6962077f893b686607a6c08ecafda13b95299d22 /clang | |
| parent | 3d584b0ced408acd5cdb6a73d3dff568844b260f (diff) | |
| download | bcm5719-llvm-1fec3dfe430f1cb202df439ddc1e166248c2df0e.tar.gz bcm5719-llvm-1fec3dfe430f1cb202df439ddc1e166248c2df0e.zip | |
Add isListInitialization matcher.
Differential Revision: http://llvm-reviews.chandlerc.com/D2708
llvm-svn: 200949
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/ASTMatchers/ASTMatchers.h | 5 | ||||
| -rw-r--r-- | clang/lib/ASTMatchers/Dynamic/Registry.cpp | 1 | ||||
| -rw-r--r-- | clang/unittests/ASTMatchers/ASTMatchersTest.cpp | 11 |
3 files changed, 17 insertions, 0 deletions
diff --git a/clang/include/clang/ASTMatchers/ASTMatchers.h b/clang/include/clang/ASTMatchers/ASTMatchers.h index 4be693f2929..5355a9a8578 100644 --- a/clang/include/clang/ASTMatchers/ASTMatchers.h +++ b/clang/include/clang/ASTMatchers/ASTMatchers.h @@ -2186,6 +2186,11 @@ AST_POLYMORPHIC_MATCHER_P(hasAnyArgument, AST_POLYMORPHIC_SUPPORTED_TYPES_2( return false; } +/// \brief Matches a constructor call expression which uses list initialization. +AST_MATCHER(CXXConstructExpr, isListInitialization) { + return Node.isListInitialization(); +} + /// \brief Matches the n'th parameter of a function declaration. /// /// Given diff --git a/clang/lib/ASTMatchers/Dynamic/Registry.cpp b/clang/lib/ASTMatchers/Dynamic/Registry.cpp index 1c7215e3273..11230ad049d 100644 --- a/clang/lib/ASTMatchers/Dynamic/Registry.cpp +++ b/clang/lib/ASTMatchers/Dynamic/Registry.cpp @@ -231,6 +231,7 @@ RegistryMaps::RegistryMaps() { REGISTER_MATCHER(isExternC); REGISTER_MATCHER(isImplicit); REGISTER_MATCHER(isInteger); + REGISTER_MATCHER(isListInitialization); REGISTER_MATCHER(isOverride); REGISTER_MATCHER(isPrivate); REGISTER_MATCHER(isProtected); diff --git a/clang/unittests/ASTMatchers/ASTMatchersTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersTest.cpp index 8825174c499..5c9753f9336 100644 --- a/clang/unittests/ASTMatchers/ASTMatchersTest.cpp +++ b/clang/unittests/ASTMatchers/ASTMatchersTest.cpp @@ -1637,6 +1637,17 @@ TEST(Matcher, ConstructorArgumentCount) { Constructor1Arg)); } +TEST(Matcher, ConstructorListInitialization) { + StatementMatcher ConstructorListInit = constructExpr(isListInitialization()); + + EXPECT_TRUE( + matches("class X { public: X(int); }; void x() { X x{0}; }", + ConstructorListInit)); + EXPECT_FALSE( + matches("class X { public: X(int); }; void x() { X x(0); }", + ConstructorListInit)); +} + TEST(Matcher,ThisExpr) { EXPECT_TRUE( matches("struct X { int a; int f () { return a; } };", thisExpr())); |

