Avoid lambdas in default member initializers to work around clang bug
authorReid Kleckner <rnk@google.com>
Mon, 28 Nov 2016 23:58:04 +0000 (23:58 +0000)
committerReid Kleckner <rnk@google.com>
Mon, 28 Nov 2016 23:58:04 +0000 (23:58 +0000)
On Windows, Clang is mangling lambdas in default member initializers
incorrectly. See PR31197.

This is causing redness on the self-host bots. Work around the problem
locally so we aren't blind to further issues.

llvm-svn: 288089

clang/unittests/Tooling/LookupTest.cpp

index 632acbe..cc3922d 100644 (file)
@@ -13,18 +13,19 @@ using namespace clang;
 
 namespace {
 struct GetDeclsVisitor : TestVisitor<GetDeclsVisitor> {
-  std::function<void(CallExpr *)> OnCall = [&](CallExpr *Expr) {};
-  std::function<void(RecordTypeLoc)> OnRecordTypeLoc = [&](RecordTypeLoc Type) {
-  };
+  std::function<void(CallExpr *)> OnCall;
+  std::function<void(RecordTypeLoc)> OnRecordTypeLoc;
   SmallVector<Decl *, 4> DeclStack;
 
   bool VisitCallExpr(CallExpr *Expr) {
-    OnCall(Expr);
+    if (OnCall)
+      OnCall(Expr);
     return true;
   }
 
   bool VisitRecordTypeLoc(RecordTypeLoc Loc) {
-    OnRecordTypeLoc(Loc);
+    if (OnRecordTypeLoc)
+      OnRecordTypeLoc(Loc);
     return true;
   }