Inherit the caller's executor in with*Continuation
#41376
Merged
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.
Not inheriting the caller's executor is a major problem for these functions. Under SE-0338, treating them as non-isolated means that it's illegal to pass them anything non-
Sendable
from a different isolation context. Since these functions are declared to take a non-Sendable
function parameter, effectively, SE-0338 means that these functions can only be safely called from non-isolated contexts. That's not really acceptable, but it gets worse: since we haven't implemented the sendability rule for that yet, we're immediately bypassing isolation safety when using these functions with no warning.The short-term fix is to add an attribute which restores the pre-SE-0338 behavior. This will also be necessary in the long term for ABI-stable emission of the
withCheckedContinuation
functions, although it's really an oversight that we even have ABI-stable emission of these functions, and we should be able to replace them with@_alwaysEmitIntoClient
versions that use whatever the proper long-term semantic fix is.