================
@@ -5723,16 +5728,51 @@ struct ImmediateCallVisitor :
DynamicRecursiveASTVisitor {
struct EnsureImmediateInvocationInDefaultArgs
: TreeTransform<EnsureImmediateInvocationInDefaultArgs> {
+ using Base = TreeTransform<EnsureImmediateInvocationInDefaultArgs>;
+
EnsureImmediateInvocationInDefaultArgs(Sema &SemaRef)
: TreeTransform(SemaRef) {}
bool AlwaysRebuild() { return true; }
+ bool ReplacingOriginal() { return true; }
+
+ // Lambda bodies are not subexpressions of the enclosing default initializer,
+ // but init-capture expressions are evaluated in the enclosing context. Keep
+ // the existing closure type and capture declarations so the existing body
+ // still refers to the right declarations.
+ ExprResult TransformLambdaExpr(LambdaExpr *E) {
+ SmallVector<Expr *, 4> CaptureInits(E->capture_inits());
----------------
efriedma-quic wrote:
I suspect we want to refactor this to use it in other places, but I guess that
can go in a followup.
https://github.com/llvm/llvm-project/pull/196597
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits