summaryrefslogtreecommitdiffstats
path: root/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp
diff options
context:
space:
mode:
authorSamuel Benzaquen <sbenza@google.com>2013-06-21 15:51:31 +0000
committerSamuel Benzaquen <sbenza@google.com>2013-06-21 15:51:31 +0000
commitc6f2c9b5665e1547af171dd9a25672a44e9280a4 (patch)
tree8993afbf11fbbf9f4b16563b2b6178346dda5b26 /clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp
parent38fa1ff71026374aec2895e61e142a9cdfd32018 (diff)
downloadbcm5719-llvm-c6f2c9b5665e1547af171dd9a25672a44e9280a4.tar.gz
bcm5719-llvm-c6f2c9b5665e1547af171dd9a25672a44e9280a4.zip
Add support for polymorphic matchers. Use runtime type checking to determine the right polymorphic overload to use.
llvm-svn: 184558
Diffstat (limited to 'clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp')
-rw-r--r--clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp56
1 files changed, 28 insertions, 28 deletions
diff --git a/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp b/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp
index c9416728e63..625f70bd465 100644
--- a/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp
+++ b/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp
@@ -27,9 +27,9 @@ TEST(VariantValueTest, Unsigned) {
EXPECT_EQ(kUnsigned, Value.getUnsigned());
EXPECT_FALSE(Value.isString());
- EXPECT_FALSE(Value.isMatcher());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::Decl>());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::UnaryOperator>());
+ EXPECT_FALSE(Value.isMatchers());
+ EXPECT_FALSE(Value.hasTypedMatcher<Decl>());
+ EXPECT_FALSE(Value.hasTypedMatcher<UnaryOperator>());
}
TEST(VariantValueTest, String) {
@@ -41,9 +41,7 @@ TEST(VariantValueTest, String) {
EXPECT_EQ("String", Value.getTypeAsString());
EXPECT_FALSE(Value.isUnsigned());
- EXPECT_FALSE(Value.isMatcher());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::Decl>());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::UnaryOperator>());
+ EXPECT_FALSE(Value.isMatchers());
}
TEST(VariantValueTest, DynTypedMatcher) {
@@ -52,25 +50,25 @@ TEST(VariantValueTest, DynTypedMatcher) {
EXPECT_FALSE(Value.isUnsigned());
EXPECT_FALSE(Value.isString());
- EXPECT_TRUE(Value.isMatcher());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::Decl>());
- EXPECT_TRUE(Value.hasTypedMatcher<clang::UnaryOperator>());
+ EXPECT_TRUE(Value.isMatchers());
+ EXPECT_FALSE(Value.hasTypedMatcher<Decl>());
+ EXPECT_TRUE(Value.hasTypedMatcher<UnaryOperator>());
EXPECT_EQ("Matcher<Stmt>", Value.getTypeAsString());
// Can only convert to compatible matchers.
Value = recordDecl();
- EXPECT_TRUE(Value.isMatcher());
- EXPECT_TRUE(Value.hasTypedMatcher<clang::Decl>());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::UnaryOperator>());
+ EXPECT_TRUE(Value.isMatchers());
+ EXPECT_TRUE(Value.hasTypedMatcher<Decl>());
+ EXPECT_FALSE(Value.hasTypedMatcher<UnaryOperator>());
EXPECT_EQ("Matcher<Decl>", Value.getTypeAsString());
Value = ignoringImpCasts(expr());
- EXPECT_TRUE(Value.isMatcher());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::Decl>());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::Stmt>());
- EXPECT_TRUE(Value.hasTypedMatcher<clang::Expr>());
- EXPECT_TRUE(Value.hasTypedMatcher<clang::IntegerLiteral>());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::GotoStmt>());
+ EXPECT_TRUE(Value.isMatchers());
+ EXPECT_FALSE(Value.hasTypedMatcher<Decl>());
+ EXPECT_FALSE(Value.hasTypedMatcher<Stmt>());
+ EXPECT_TRUE(Value.hasTypedMatcher<Expr>());
+ EXPECT_TRUE(Value.hasTypedMatcher<IntegerLiteral>());
+ EXPECT_FALSE(Value.hasTypedMatcher<GotoStmt>());
EXPECT_EQ("Matcher<Expr>", Value.getTypeAsString());
}
@@ -79,31 +77,31 @@ TEST(VariantValueTest, Assignment) {
EXPECT_TRUE(Value.isString());
EXPECT_EQ("A", Value.getString());
EXPECT_FALSE(Value.isUnsigned());
- EXPECT_FALSE(Value.isMatcher());
+ EXPECT_FALSE(Value.isMatchers());
EXPECT_EQ("String", Value.getTypeAsString());
Value = recordDecl();
EXPECT_FALSE(Value.isUnsigned());
EXPECT_FALSE(Value.isString());
- EXPECT_TRUE(Value.isMatcher());
- EXPECT_TRUE(Value.hasTypedMatcher<clang::Decl>());
- EXPECT_FALSE(Value.hasTypedMatcher<clang::UnaryOperator>());
+ EXPECT_TRUE(Value.isMatchers());
+ EXPECT_TRUE(Value.hasTypedMatcher<Decl>());
+ EXPECT_FALSE(Value.hasTypedMatcher<UnaryOperator>());
EXPECT_EQ("Matcher<Decl>", Value.getTypeAsString());
Value = 17;
EXPECT_TRUE(Value.isUnsigned());
EXPECT_EQ(17U, Value.getUnsigned());
- EXPECT_FALSE(Value.isMatcher());
+ EXPECT_FALSE(Value.isMatchers());
EXPECT_FALSE(Value.isString());
Value = VariantValue();
EXPECT_FALSE(Value.isUnsigned());
EXPECT_FALSE(Value.isString());
- EXPECT_FALSE(Value.isMatcher());
+ EXPECT_FALSE(Value.isMatchers());
EXPECT_EQ("Nothing", Value.getTypeAsString());
}
-TEST(GenericValueTest, Matcher) {
+TEST(VariantValueTest, Matcher) {
EXPECT_TRUE(matches("class X {};", VariantValue(recordDecl(hasName("X")))
.getTypedMatcher<Decl>()));
EXPECT_TRUE(
@@ -117,13 +115,15 @@ TEST(GenericValueTest, Matcher) {
// do this test when building with MSVC because its debug C runtime prints the
// assertion failure message as a wide string, which gtest doesn't understand.
EXPECT_DEATH(VariantValue(varDecl()).getTypedMatcher<Stmt>(),
- "canConstructFrom");
+ "hasTypedMatcher");
#endif
EXPECT_FALSE(
matches("int x;", VariantValue(functionDecl()).getTypedMatcher<Decl>()));
- EXPECT_FALSE(matches("int foo() { return 1 + 1; }",
- VariantValue(declRefExpr()).getTypedMatcher<Stmt>()));
+ EXPECT_FALSE(
+ matches("int foo() { return 1 + 1; }",
+
+ VariantValue(declRefExpr()).getTypedMatcher<Stmt>()));
}
} // end anonymous namespace
OpenPOWER on IntegriCloud