Per latest drafting, switch to implementing init-captures as if by declaring
and capturing a variable declaration, and complete the implementation of them.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191605 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h
index 6559ded..5b019a9 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -8313,7 +8313,9 @@
if (!C->isInitCapture())
continue;
InitCaptureExprs[C - E->capture_begin()] =
- getDerived().TransformExpr(E->getInitCaptureInit(C));
+ getDerived().TransformInitializer(
+ C->getCapturedVar()->getInit(),
+ C->getCapturedVar()->getInitStyle() == VarDecl::CallInit);
}
// Introduce the context of the call operator.
@@ -8353,14 +8355,15 @@
Invalid = true;
continue;
}
- FieldDecl *OldFD = C->getInitCaptureField();
- FieldDecl *NewFD = getSema().checkInitCapture(
- C->getLocation(), OldFD->getType()->isReferenceType(),
- OldFD->getIdentifier(), Init.take());
- if (!NewFD)
+ VarDecl *OldVD = C->getCapturedVar();
+ VarDecl *NewVD = getSema().checkInitCapture(
+ C->getLocation(), OldVD->getType()->isReferenceType(),
+ OldVD->getIdentifier(), Init.take());
+ if (!NewVD)
Invalid = true;
else
- getDerived().transformedLocalDecl(OldFD, NewFD);
+ getDerived().transformedLocalDecl(OldVD, NewVD);
+ getSema().buildInitCaptureField(LSI, NewVD);
continue;
}