struct Point { var x: Int var y: Int } struct Rectangle { var topLeft: Point var bottomRight: Point } @dynamicMemberLookup struct Lens { var obj: T init(_ obj: T) { self.obj = obj } subscript(dynamicMember member: WritableKeyPath) -> Lens { get { return Lens(obj[keyPath: member]) } set { obj[keyPath: member] = newValue.obj } } } func test(r: Lens) { _ = r.topLeft _ = r.bottomRight.y } func keyPathTester(keyPath: KeyPath, V>) {} func testKeyPath() { keyPathTester(keyPath: \.topLeft) } // RUN: %sourcekitd-test -req=sema %s -- %s > %t.response // RUN: %diff -u %s.response %t.response