为什么 swift 不警告这个不可发送的全局传递到不同的任务?

JMC*_*JMC 6 swift swift-concurrency

考虑以下代码:

class Cat {
    var name = "Tom"
}

class Globals {
    var cat = Cat()
}

let glob = Globals()

func one () {
    Task {glob.cat.name="Max"} // Expected Warning about some nonSendable moving into a different concurrency domain
}
Run Code Online (Sandbox Code Playgroud)

通常,-warn-concurrency启用后,Swift/Xcode 会警告不可发送的内容跨并发域。

根据我的理解,传递给的闭包Task必须始终是一个@Sendable闭包。闭包@Sendable只能捕获 Sendables。但是,Globals 不是可发送类型。我预计会出现类似以下的警告

@Sendable在闭包中捕获具有不可发送类型“Globals”的“glob”

不会发出此类警告。