mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
41 lines
848 B
Swift
41 lines
848 B
Swift
// RUN: %target-typecheck-verify-swift
|
|
|
|
// https://github.com/apple/swift/issues/54962
|
|
|
|
@propertyWrapper
|
|
@dynamicMemberLookup
|
|
struct Binding<Value> {
|
|
var wrappedValue: Value
|
|
|
|
subscript<Subject>(dynamicMember keyPath: WritableKeyPath<Value, Subject>) -> Binding<Subject> {
|
|
get { fatalError() }
|
|
}
|
|
}
|
|
|
|
@propertyWrapper
|
|
struct Wrapper<Value> {
|
|
var wrappedValue: Value
|
|
var projectedValue: Binding<Value>
|
|
}
|
|
|
|
@dynamicMemberLookup class Foo {
|
|
struct State {
|
|
let value: Bool
|
|
}
|
|
|
|
let currentState: State = State(value: false)
|
|
|
|
subscript<U>(dynamicMember keyPath: KeyPath<State, U>) -> U {
|
|
return currentState[keyPath: keyPath]
|
|
}
|
|
}
|
|
|
|
struct Test {
|
|
@Wrapper var foo: Foo
|
|
|
|
func test() {
|
|
if foo.bar { // expected-error {{value of type 'Foo' has no dynamic member 'bar' using key path from root type 'Foo.State'}}
|
|
}
|
|
}
|
|
}
|