Skip to content

Instantly share code, notes, and snippets.

@inamiy
Last active December 15, 2022 13:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inamiy/808047a83cd9dfe644828342350da1e5 to your computer and use it in GitHub Desktop.
Save inamiy/808047a83cd9dfe644828342350da1e5 to your computer and use it in GitHub Desktop.
`Task { [weak self] in self?.prop = value }` causes non-isolated mutation error https://twitter.com/inamiy/status/1603267958209331200
actor A {
var prop: Int = 0
func foo() {
// OK
Task {
self.prop = 1
}
// ERROR: Actor-isolated property 'prop' can not be mutated from a non-isolated context
Task { [weak self] in
self?.prop = 1
}
// ERROR: Actor-isolated property 'prop' can not be mutated from a non-isolated context
Task { [weak self] in
guard let self = self else { return }
self.prop = 1
}
// Requires setter and `await`
Task { [weak self] in
await self?.setProp(1)
}
}
func setProp(_ prop: Int) {
self.prop = prop
}
}
let a = A()
await a.foo()
@inamiy
Copy link
Author

inamiy commented Dec 15, 2022

Raised ticket: apple/swift#62604

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment