summaryrefslogtreecommitdiffstats
path: root/clang/unittests/AST/DeclPrinterTest.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2012-10-18 19:12:17 +0000
committerFariborz Jahanian <fjahanian@apple.com>2012-10-18 19:12:17 +0000
commite0586a574e8ab46c29952fe00044943bb52f34a1 (patch)
treefc58d20a0f7701a5856430bd057635b6973f88ee /clang/unittests/AST/DeclPrinterTest.cpp
parentdd433f0b2fbd6dad8de3ee47df4835dbc01252c5 (diff)
downloadbcm5719-llvm-e0586a574e8ab46c29952fe00044943bb52f34a1.tar.gz
bcm5719-llvm-e0586a574e8ab46c29952fe00044943bb52f34a1.zip
Patch for decl printer test of objective-c methods.
Patch by Dmitri Gribenko. llvm-svn: 166209
Diffstat (limited to 'clang/unittests/AST/DeclPrinterTest.cpp')
-rw-r--r--clang/unittests/AST/DeclPrinterTest.cpp42
1 files changed, 36 insertions, 6 deletions
diff --git a/clang/unittests/AST/DeclPrinterTest.cpp b/clang/unittests/AST/DeclPrinterTest.cpp
index 0bb0272eb56..a2fc839b9c8 100644
--- a/clang/unittests/AST/DeclPrinterTest.cpp
+++ b/clang/unittests/AST/DeclPrinterTest.cpp
@@ -69,13 +69,14 @@ public:
StringRef Code,
const std::vector<std::string> &Args,
const DeclarationMatcher &NodeMatch,
- StringRef ExpectedPrinted) {
+ StringRef ExpectedPrinted,
+ StringRef FileName) {
PrintMatch Printer;
MatchFinder Finder;
Finder.addMatcher(NodeMatch, &Printer);
OwningPtr<FrontendActionFactory> Factory(newFrontendActionFactory(&Finder));
- if (!runToolOnCodeWithArgs(Factory->create(), Code, Args))
+ if (!runToolOnCodeWithArgs(Factory->create(), Code, Args, FileName))
return testing::AssertionFailure() << "Parsing error in \"" << Code << "\"";
if (Printer.getNumFoundDecls() == 0)
@@ -102,7 +103,8 @@ public:
return PrintedDeclMatches(Code,
Args,
namedDecl(hasName(DeclName)).bind("id"),
- ExpectedPrinted);
+ ExpectedPrinted,
+ "input.cc");
}
::testing::AssertionResult PrintedDeclCXX98Matches(
@@ -113,7 +115,8 @@ public:
return PrintedDeclMatches(Code,
Args,
NodeMatch,
- ExpectedPrinted);
+ ExpectedPrinted,
+ "input.cc");
}
::testing::AssertionResult PrintedDeclCXX11Matches(StringRef Code,
@@ -123,7 +126,8 @@ public:
return PrintedDeclMatches(Code,
Args,
namedDecl(hasName(DeclName)).bind("id"),
- ExpectedPrinted);
+ ExpectedPrinted,
+ "input.cc");
}
::testing::AssertionResult PrintedDeclCXX11Matches(
@@ -134,7 +138,20 @@ public:
return PrintedDeclMatches(Code,
Args,
NodeMatch,
- ExpectedPrinted);
+ ExpectedPrinted,
+ "input.cc");
+}
+
+::testing::AssertionResult PrintedDeclObjCMatches(
+ StringRef Code,
+ const DeclarationMatcher &NodeMatch,
+ StringRef ExpectedPrinted) {
+ std::vector<std::string> Args(1, "");
+ return PrintedDeclMatches(Code,
+ Args,
+ NodeMatch,
+ ExpectedPrinted,
+ "input.m");
}
} // unnamed namespace
@@ -1216,3 +1233,16 @@ TEST(DeclPrinter, TestTemplateArgumentList15) {
// Should be: with semicolon, without extra space in "> >"
}
+TEST(DeclPrinter, TestObjCMethod1) {
+ ASSERT_TRUE(PrintedDeclObjCMatches(
+ "__attribute__((objc_root_class)) @interface X\n"
+ "- (int)A:(id)anObject inRange:(long)range;\n"
+ "@end\n"
+ "@implementation X\n"
+ "- (int)A:(id)anObject inRange:(long)range { int printThis; return 0; }\n"
+ "@end\n",
+ namedDecl(hasName("A:inRange:"),
+ hasDescendant(namedDecl(hasName("printThis")))).bind("id"),
+ "- (int) A:(id)anObject inRange:(long)range"));
+}
+
OpenPOWER on IntegriCloud