summaryrefslogtreecommitdiffstats
path: root/clang/unittests/Tooling
diff options
context:
space:
mode:
authorAlp Toker <alp@nuanti.com>2014-06-26 01:42:24 +0000
committerAlp Toker <alp@nuanti.com>2014-06-26 01:42:24 +0000
commite3ad531afb410bd02662d6187a3d7c1594f0df6c (patch)
tree731e1767cd290ef7b637a8d1f270b0d3ea729159 /clang/unittests/Tooling
parentc6f8fdb4e5fad2cc443c135b39c1051c96df9c6c (diff)
downloadbcm5719-llvm-e3ad531afb410bd02662d6187a3d7c1594f0df6c.tar.gz
bcm5719-llvm-e3ad531afb410bd02662d6187a3d7c1594f0df6c.zip
RAV: visit copy expressions of captured variables in blocks (ObjC++11)
Patch by Mathieu Baudet. llvm-svn: 211758
Diffstat (limited to 'clang/unittests/Tooling')
-rw-r--r--clang/unittests/Tooling/RecursiveASTVisitorTest.cpp10
-rw-r--r--clang/unittests/Tooling/TestVisitor.h13
2 files changed, 22 insertions, 1 deletions
diff --git a/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp b/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp
index 6be734e6d4b..a1a93a59c79 100644
--- a/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp
+++ b/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp
@@ -561,6 +561,16 @@ TEST(RecursiveASTVisitor, HasCaptureDefaultLoc) {
LambdaDefaultCaptureVisitor::Lang_CXX11));
}
+TEST(RecursiveASTVisitor, VisitsCopyExprOfBlockDeclCapture) {
+ DeclRefExprVisitor Visitor;
+ Visitor.ExpectMatch("x", 3, 24);
+ EXPECT_TRUE(Visitor.runOver("void f(int(^)(int)); \n"
+ "void g() { \n"
+ " f([&](int x){ return x; }); \n"
+ "}",
+ DeclRefExprVisitor::Lang_OBJCXX11));
+}
+
// Checks for lambda classes that are not marked as implicitly-generated.
// (There should be none.)
class ClassVisitor : public ExpectedLocationVisitor<ClassVisitor> {
diff --git a/clang/unittests/Tooling/TestVisitor.h b/clang/unittests/Tooling/TestVisitor.h
index 2e64032cf40..ae02fb5ebbf 100644
--- a/clang/unittests/Tooling/TestVisitor.h
+++ b/clang/unittests/Tooling/TestVisitor.h
@@ -39,7 +39,14 @@ public:
virtual ~TestVisitor() { }
- enum Language { Lang_C, Lang_CXX98, Lang_CXX11, Lang_OBJC, Lang_CXX=Lang_CXX98 };
+ enum Language {
+ Lang_C,
+ Lang_CXX98,
+ Lang_CXX11,
+ Lang_OBJC,
+ Lang_OBJCXX11,
+ Lang_CXX = Lang_CXX98
+ };
/// \brief Runs the current AST visitor over the given code.
bool runOver(StringRef Code, Language L = Lang_CXX) {
@@ -49,6 +56,10 @@ public:
case Lang_CXX98: Args.push_back("-std=c++98"); break;
case Lang_CXX11: Args.push_back("-std=c++11"); break;
case Lang_OBJC: Args.push_back("-ObjC"); break;
+ case Lang_OBJCXX11:
+ Args.push_back("-ObjC++");
+ Args.push_back("-std=c++11");
+ break;
}
return tooling::runToolOnCodeWithArgs(CreateTestAction(), Code, Args);
}
OpenPOWER on IntegriCloud