[5.10] Provide ability to use CheckedContinuation when suspending for an async ObjC call #69139
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.
Cherry-pick of #68390
To provide enhanced debugging and runtime checking for the correct usage
of continuations passed in a call to ObjC from Swift, this PR introduces a flag
for the
swift-frontend
that uses aCheckedContinuation
when calling anasync ObjC function from Swift. When enabled, the underlying block value
passed as a completion-handler is created using
CheckedContinuation
instead of just an
UnsafeContinuation
, which was what was used previously.The checked continuation ensures that the block is only invoked once.
As of now, the
swift-frontend
flag is-checked-async-objc-bridging={on, off}
Scope: Calls to ObjC with async handlers.
Main Branch PR: Provide ability to use CheckedContinuation when suspending for an async ObjC call #68390
Resolves: rdar://89930501
Risk: Low
Reviewed By: @ktoso @jckarter
Testing: added test-cases to the test suite.