summaryrefslogtreecommitdiffstats
path: root/clang/unittests/ASTMatchers/ASTMatchersTest.cpp
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2016-01-29 17:03:11 +0000
committerAaron Ballman <aaron@aaronballman.com>2016-01-29 17:03:11 +0000
commitfb9d0e354da8e8dae89d2efeb81b8442a8f42046 (patch)
tree714b8d0721e643ceda1acf202b901e1f05b96266 /clang/unittests/ASTMatchers/ASTMatchersTest.cpp
parent565f7866ac9e0d597118cf6b7238c5305315af50 (diff)
downloadbcm5719-llvm-fb9d0e354da8e8dae89d2efeb81b8442a8f42046.tar.gz
bcm5719-llvm-fb9d0e354da8e8dae89d2efeb81b8442a8f42046.zip
Extend hasType narrowing matcher for TypedefDecls, add functionProtoType matcher for FunctionProtoType nodes, extend parameterCountIs to FunctionProtoType nodes.
Patch by Richard Thomson llvm-svn: 259210
Diffstat (limited to 'clang/unittests/ASTMatchers/ASTMatchersTest.cpp')
-rw-r--r--clang/unittests/ASTMatchers/ASTMatchersTest.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/clang/unittests/ASTMatchers/ASTMatchersTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersTest.cpp
index 7fd933718fa..073f2c50938 100644
--- a/clang/unittests/ASTMatchers/ASTMatchersTest.cpp
+++ b/clang/unittests/ASTMatchers/ASTMatchersTest.cpp
@@ -1091,6 +1091,16 @@ TEST(HasType, TakesDeclMatcherAndMatchesValueDecl) {
notMatches("class X {}; void y() { X *x; }", varDecl(hasType(ClassX))));
}
+TEST(HasType, MatchesTypedefDecl) {
+ EXPECT_TRUE(matches("typedef int X;", typedefDecl(hasType(asString("int")))));
+ EXPECT_TRUE(matches("typedef const int T;",
+ typedefDecl(hasType(asString("const int")))));
+ EXPECT_TRUE(notMatches("typedef const int T;",
+ typedefDecl(hasType(asString("int")))));
+ EXPECT_TRUE(matches("typedef int foo; typedef foo bar;",
+ typedefDecl(hasType(asString("foo")), hasName("bar"))));
+}
+
TEST(HasTypeLoc, MatchesDeclaratorDecls) {
EXPECT_TRUE(matches("int x;",
varDecl(hasName("x"), hasTypeLoc(loc(asString("int"))))));
@@ -1563,6 +1573,9 @@ TEST(Function, MatchesFunctionDeclarations) {
functionDecl(isVariadic())));
EXPECT_TRUE(notMatches("void f();", functionDecl(isVariadic())));
EXPECT_TRUE(notMatchesC("void f();", functionDecl(isVariadic())));
+ EXPECT_TRUE(matches("void f(...);", functionDecl(parameterCountIs(0))));
+ EXPECT_TRUE(matchesC("void f();", functionDecl(parameterCountIs(0))));
+ EXPECT_TRUE(matches("void f(int, ...);", functionDecl(parameterCountIs(1))));
}
TEST(FunctionTemplate, MatchesFunctionTemplateDeclarations) {
@@ -1719,6 +1732,7 @@ TEST(Matcher, ParameterCount) {
EXPECT_TRUE(matches("class X { void f(int i) {} };", Function1Arg));
EXPECT_TRUE(notMatches("void f() {}", Function1Arg));
EXPECT_TRUE(notMatches("void f(int i, int j, int k) {}", Function1Arg));
+ EXPECT_TRUE(matches("void f(int i, ...) {};", Function1Arg));
}
TEST(Matcher, References) {
@@ -4447,6 +4461,15 @@ TEST(TypeMatching, MatchesFunctionTypes) {
EXPECT_TRUE(matches("void f(int i) {}", functionType()));
}
+TEST(TypeMatching, MatchesFunctionProtoTypes) {
+ EXPECT_TRUE(matches("int (*f)(int);", functionProtoType()));
+ EXPECT_TRUE(matches("void f(int i);", functionProtoType()));
+ EXPECT_TRUE(matches("void f();", functionProtoType(parameterCountIs(0))));
+ EXPECT_TRUE(notMatchesC("void f();", functionProtoType()));
+ EXPECT_TRUE(
+ matchesC("void f(void);", functionProtoType(parameterCountIs(0))));
+}
+
TEST(TypeMatching, MatchesParenType) {
EXPECT_TRUE(
matches("int (*array)[4];", varDecl(hasType(pointsTo(parenType())))));
@@ -5148,7 +5171,8 @@ TEST(IsInlineMatcher, IsInline) {
namespaceDecl(isInline(), hasName("m"))));
}
-// FIXME: Figure out how to specify paths so the following tests pass on Windows.
+// FIXME: Figure out how to specify paths so the following tests pass on
+// Windows.
#ifndef LLVM_ON_WIN32
TEST(Matcher, IsExpansionInMainFileMatcher) {
OpenPOWER on IntegriCloud