summaryrefslogtreecommitdiffstats
path: root/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Sema/TreeTransform.h')
-rw-r--r--lib/Sema/TreeTransform.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h
index 6559dede1c..5b019a96c0 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -8313,7 +8313,9 @@ TreeTransform<Derived>::TransformLambdaScope(LambdaExpr *E,
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 @@ TreeTransform<Derived>::TransformLambdaScope(LambdaExpr *E,
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;
}