Avoid emitting variable debug info for closure captures.

Variable debug info is triggered by pattern bindings, however, inside a closure
capture list, this should be avoided by setting the appropriate flag in the
initializer object.

rdar://110329894
This commit is contained in:
Adrian Prantl
2023-06-08 16:33:14 -07:00
parent c4b6710822
commit 3a97766bb3
3 changed files with 31 additions and 3 deletions

View File

@@ -1789,8 +1789,10 @@ void SILGenFunction::emitStmtCondition(StmtCondition Cond, JumpDest FalseDest,
InitializationPtr SILGenFunction::emitPatternBindingInitialization(
Pattern *P, JumpDest failureDest, bool generateDebugInfo) {
return InitializationForPattern(*this, failureDest, generateDebugInfo)
.visit(P);
auto init =
InitializationForPattern(*this, failureDest, generateDebugInfo).visit(P);
init->setEmitDebugValueOnInit(generateDebugInfo);
return init;
}
/// Enter a cleanup to deallocate the given location.