diff options
| author | Alp Toker <alp@nuanti.com> | 2014-06-26 01:42:24 +0000 |
|---|---|---|
| committer | Alp Toker <alp@nuanti.com> | 2014-06-26 01:42:24 +0000 |
| commit | e3ad531afb410bd02662d6187a3d7c1594f0df6c (patch) | |
| tree | 731e1767cd290ef7b637a8d1f270b0d3ea729159 /clang/unittests/Tooling | |
| parent | c6f8fdb4e5fad2cc443c135b39c1051c96df9c6c (diff) | |
| download | bcm5719-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.cpp | 10 | ||||
| -rw-r--r-- | clang/unittests/Tooling/TestVisitor.h | 13 |
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); } |

