// RUN: %target-run-simple-swift | %FileCheck %s // REQUIRES: executable_test // REQUIRES: objc_interop import Foundation class Person : NSObject { @objc(firstNameString) var firstName: String var lastName: String init(firstName: String, lastName: String) { self.firstName = firstName self.lastName = lastName } override var description: String { return "\(lastName), \(firstName)" } } class Band : NSObject { var members: [Person] = [] } class RecordLabel : NSObject { var bands: [String : Band] = [:] } let band = Band() band.members = [Person(firstName: "John", lastName: "Lennon"), Person(firstName: "Paul", lastName: "McCartney"), Person(firstName: "George", lastName: "Harrison"), Person(firstName: "Ringo", lastName: "Star")] // CHECK: ===Members=== // CHECK-NEXT: ( // CHECK-NEXT: Lennon, John // CHECK-NEXT McCartney, Paul, // CHECK-NEXT Harrison, George, // CHECK-NEXT Star, Ringo // CHECK-NEXT) print("===Members===") print((band.value(forKeyPath: #keyPath(Band.members))! as AnyObject).description) // CHECK: ===First Names=== // CHECK-NEXT: ( // CHECK-NEXT: John, // CHECK-NEXT: Paul, // CHECK-NEXT: George, // CHECK-NEXT: Ringo // CHECK-NEXT:) print("===First Names===") print((band.value(forKeyPath: #keyPath(Band.members.firstName))! as AnyObject).description) let recordLabel = RecordLabel() recordLabel.bands["Beatles"] = band // CHECK: ===Last Names=== // CHECK-NEXT: ( // CHECK-NEXT: Lennon, // CHECK-NEXT: McCartney, // CHECK-NEXT: Harrison, // CHECK-NEXT: Star // CHECK-NEXT: ) print("===Last Names===") print((recordLabel.value(forKeyPath: #keyPath(RecordLabel.bands.Beatles.members.lastName))! as AnyObject).description) // CHECK: DONE print("DONE")