1 //===- unittest/Tooling/RecursiveASTVisitorTests/Class.cpp ----------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "TestVisitor.h"
12 using namespace clang;
16 // Checks for lambda classes that are not marked as implicitly-generated.
17 // (There should be none.)
18 class ClassVisitor : public ExpectedLocationVisitor<ClassVisitor> {
20 ClassVisitor() : SawNonImplicitLambdaClass(false) {}
21 bool VisitCXXRecordDecl(CXXRecordDecl* record) {
22 if (record->isLambda() && !record->isImplicit())
23 SawNonImplicitLambdaClass = true;
27 bool sawOnlyImplicitLambdaClasses() const {
28 return !SawNonImplicitLambdaClass;
32 bool SawNonImplicitLambdaClass;
35 TEST(RecursiveASTVisitor, LambdaClosureTypesAreImplicit) {
37 EXPECT_TRUE(Visitor.runOver("auto lambda = []{};", ClassVisitor::Lang_CXX11));
38 EXPECT_TRUE(Visitor.sawOnlyImplicitLambdaClasses());
41 } // end anonymous namespace