]> granicus.if.org Git - clang/commitdiff
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@288089 91177308-0d34-0410-b5e6-96231b3b80d8

unittests/Tooling/LookupTest.cpp

index 632acbe4ba4c2fbc11c1d8e98e681fb2b97c5fd7..cc3922d01b51c59306b5274a1a760a600d5dd089 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;
   }