[Concurrency] Don't attempt to hop to executor inside default argument generators and stored property initializers. #72332
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.
Otherwise, the compiler will fail an assertion or crash in IRGen because there's a suspension point in a synchronous function. For example:
The actor isolation checker ensures that the isolation of default arguments matches the isolation of the callee, so this code is valid. However, default argument generators and stored property initializers don't formally model their isolation in these cases, so the compiler attempts to emit a hop in the middle of a synchronous function when the default argument itself makes a call that uses an isolated default argument value. For now, don't emit the hop if the function is synchronous. A better approach would be to formally model the isolation for these function declarations that are generated in SIL.
Resolves: rdar://124502334