diff options
Diffstat (limited to 'clang/unittests/Tooling/RecursiveASTVisitorTest.cpp')
-rw-r--r-- | clang/unittests/Tooling/RecursiveASTVisitorTest.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp b/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp index c97ee0c8c47..2de9f15f226 100644 --- a/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp +++ b/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp @@ -102,7 +102,19 @@ public: return PendingBodies.empty(); } private: - std::stack<LambdaExpr *> PendingBodies; + std::stack<LambdaExpr *> PendingBodies; +}; + +// Matches the (optional) capture-default of a lambda-introducer. +class LambdaDefaultCaptureVisitor + : public ExpectedLocationVisitor<LambdaDefaultCaptureVisitor> { +public: + bool VisitLambdaExpr(LambdaExpr *Lambda) { + if (Lambda->getCaptureDefault() != LCD_None) { + Match("", Lambda->getCaptureDefaultLoc()); + } + return true; + } }; class TemplateArgumentLocTraverser @@ -503,4 +515,11 @@ TEST(RecursiveASTVisitor, TraverseLambdaBodyCanBeOverridden) { EXPECT_TRUE(Visitor.allBodiesHaveBeenTraversed()); } +TEST(RecursiveASTVisitor, HasCaptureDefaultLoc) { + LambdaDefaultCaptureVisitor Visitor; + Visitor.ExpectMatch("", 1, 20); + EXPECT_TRUE(Visitor.runOver("void f() { int a; [=]{a;}; }", + LambdaDefaultCaptureVisitor::Lang_CXX11)); +} + } // end namespace clang |