First pass of semantic analysis for init-captures: check the initializer, build
a FieldDecl from it, and propagate both into the closure type and the
LambdaExpr.
You can't do much useful with them yet -- you can't use them within the body
of the lambda, because we don't have a representation for "the this of the
lambda, not the this of the enclosing context". We also don't have support or a
representation for a nested capture of an init-capture yet, which was intended
to work despite not being allowed by the current standard wording.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181985 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp
index 9203dc1..2edb078 100644
--- a/lib/AST/StmtPrinter.cpp
+++ b/lib/AST/StmtPrinter.cpp
@@ -1387,6 +1387,13 @@
OS << '=';
OS << C->getCapturedVar()->getName();
break;
+
+ case LCK_Init:
+ if (C->getInitCaptureField()->getType()->isReferenceType())
+ OS << '&';
+ OS << C->getInitCaptureField()->getName();
+ PrintExpr(Node->getInitCaptureInit(C));
+ break;
}
}
OS << ']';