blob: bd9cf67b9243faa5770822907a2f0c0a06f4b48a [file] [log] [blame]
// RUN: %target-typecheck-verify-swift %S/Inputs/keypath.swift -primary-file %s
struct S {
let i: Int
init() {
let _: WritableKeyPath<S, Int> = \.i // no error for Swift 3/4
S()[keyPath: \S.i] = 1
// expected-error@-1 {{cannot assign to immutable expression}}
}
}
func test() {
let _: WritableKeyPath<C, Int> = \.i // no error for Swift 3/4
C()[keyPath: \C.i] = 1 // warning on write with literal keypath
// expected-warning@-1 {{forming a writable keypath to property}}
let _ = C()[keyPath: \C.i] // no warning for a read
}