[Concurrency] Allow struct members to have isolation annotations. #72214
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.
The compiler was banning writing global actors or
nonisolated
on struct stored properties. This change removes those diagnostics.I believe global actors were banned because it's safe to access a stored property as
nonisolated
if the property type isSendable
because of value semantics. We should absolutely allow that, but we should only allow it within the module (to preserve the ability for a stored property to evolve into a computed property), we should use the same mechanism that's used for allowingnonisolated
access to actorlet
s that areSendable
, and we should formalize that semantic rule in a Swift evolution proposal.For
nonisolated
, I'm not sure why the compiler banned this.nonisolated
is fine on a struct stored property that isSendable
, andnonisolated(unsafe)
can be used as a granular opt out for making a struct conform toSendable
without resorting to an@unchecked Sendable
conformance when the property type is notSendable
.