Only warn about self capture in nested closures until Swift 6 #38947
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Swift has diagnosed implicit uses of class-reference
self
in escaping closures for a long time as potentially leading to reference cycles. PR #35898 fixed a bug where we failed to diagnose this condition in nested closures. Unfortunately, treating this as an error has proven problematic because there's a lot of code doing it. Requiring that code to be thoroughly stamped out before we ship a compiler is just too much to ask. Stage the fix in by treating it as a warning in Swift versions prior to 6.As with the non-nested case, this warning can be suppressed by explicitly either capturing
self
or spelling outself.
in the access.Fixes rdar://80847025.