summaryrefslogtreecommitdiff
path: root/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-05-08 17:13:11 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-05-08 17:13:11 +0000
commit0a5fb09b599c1bdea3cd11168bb8f4ff4040316e (patch)
tree5e94367d1a8032322c6871cfe16714c0982fd61a /unittests/ASTMatchers/ASTMatchersNodeTest.cpp
parentf0c0337bbfb63d1f9edf145aab535bdf82c20454 (diff)
Diffstat (limited to 'unittests/ASTMatchers/ASTMatchersNodeTest.cpp')
-rw-r--r--unittests/ASTMatchers/ASTMatchersNodeTest.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/unittests/ASTMatchers/ASTMatchersNodeTest.cpp b/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
index 5c29334222df..dfaa441cd764 100644
--- a/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
+++ b/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
@@ -1020,6 +1020,29 @@ TEST(InitListExpression, MatchesInitListExpression) {
matches("int i[1] = {42, [0] = 43};", integerLiteral(equals(42))));
}
+TEST(CXXStdInitializerListExpression, MatchesCXXStdInitializerListExpression) {
+ const std::string code = "namespace std {"
+ "template <typename> class initializer_list {"
+ " public: initializer_list() noexcept {}"
+ "};"
+ "}"
+ "struct A {"
+ " A(std::initializer_list<int>) {}"
+ "};";
+ EXPECT_TRUE(matches(code + "A a{0};",
+ cxxConstructExpr(has(cxxStdInitializerListExpr()),
+ hasDeclaration(cxxConstructorDecl(
+ ofClass(hasName("A")))))));
+ EXPECT_TRUE(matches(code + "A a = {0};",
+ cxxConstructExpr(has(cxxStdInitializerListExpr()),
+ hasDeclaration(cxxConstructorDecl(
+ ofClass(hasName("A")))))));
+
+ EXPECT_TRUE(notMatches("int a[] = { 1, 2 };", cxxStdInitializerListExpr()));
+ EXPECT_TRUE(notMatches("struct B { int x, y; }; B b = { 5, 6 };",
+ cxxStdInitializerListExpr()));
+}
+
TEST(UsingDeclaration, MatchesUsingDeclarations) {
EXPECT_TRUE(matches("namespace X { int x; } using X::x;",
usingDecl()));