swiftlang/swift

Misleading error about `nonisolated` not being applicable to mutable stored properties

開放

#88,709 建立於 2026年4月28日

 (2 則留言) (0 個反應) (1 位負責人)Swift (10,719 個分叉)batch import
actor isolationcompilerconcurrencydiagnostics qualitygood first issueswift 6.3type checker

倉庫指標

星標
 (69,989 顆星)
PR 合併指標
 (平均合併 8天 17小時) (30 天內合併 510 個 PR)

描述

Description

No response

Reproduction

@MainActor
final class C {
  nonisolated var c = 0
}
actor A {
  nonisolated var a = 0
}
@MainActor
struct S {
  nonisolated var s = 0
}
<source>:3:3: error: 'nonisolated' cannot be applied to mutable stored properties
 1 | @MainActor
 2 | final class C {
 3 |   nonisolated var c = 0
   |   |               `- note: convert 'c' to a 'let' constant or consider declaring it 'nonisolated(unsafe)' if manually managing concurrency safety
   |   `- error: 'nonisolated' cannot be applied to mutable stored properties
 4 | }
 5 | actor A {

<source>:6:3: error: 'nonisolated' cannot be applied to mutable stored properties
 4 | }
 5 | actor A {
 6 |   nonisolated var a = 0
   |   |               `- note: convert 'a' to a 'let' constant or consider declaring it 'nonisolated(unsafe)' if manually managing concurrency safety
   |   `- error: 'nonisolated' cannot be applied to mutable stored properties
 7 | }
 8 | @MainActor

Expected behavior

'nonisolated' cannot be applied to mutable stored properties

Yes it can — see s. The message needs to be more specific.

Environment

Swift version 6.4-dev (f4c024ed196fc27)

Additional information

No response

貢獻者指南