blob: cc704556bf51a4e3ea40b9c8c975b5c48e41e240 [file] [log] [blame]
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_1 | %FileCheck %s -check-prefix=PERSON-MEMBER
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_2 | %FileCheck %s -check-prefix=PERSON-MEMBER
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_3 | %FileCheck %s -check-prefix=PERSON-MEMBER
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_5 | %FileCheck %s -check-prefix=PERSON-MEMBER
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_6 | %FileCheck %s -check-prefix=PERSON-MEMBER
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_7 | %FileCheck %s -check-prefix=PERSON-MEMBER
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_8 | %FileCheck %s -check-prefix=PERSON-MEMBER
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_9 | %FileCheck %s -check-prefix=PERSON-MEMBER
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_10 | %FileCheck %s -check-prefix=PERSON-MEMBER
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PART_11 | %FileCheck %s -check-prefix=PERSON-MEMBER
class Person {
var name: String
var friends: [Person] = []
var bestFriend: Person? = nil
init(name: String) {
self.name = name
}
func getName() -> String { return name }
subscript(_ index: Int) -> Int { get { return 1} }
}
let keyPath1 = \Person.#^PART_1^#
let keyPath2 = \Person.friends[0].#^PART_2^#
let keyPath3 = \Person.friends[0].friends[0].friends[0].#^PART_3^#
// FIXME: the optionality keypath should work after our compiler is ready.
let keyPath4 = \Person.bestFriend?.#^PART_4^#
let keyPath5 = \Person.friends.[0].friends[0].friends[0].#^PART_5^#
let keyPath6 = \[Person].[0].#^PART_6^#
let keyPath7 = \[Person].[0].friends[0].#^PART_7^#
func foo1(_ p : Person) {
_ = p[keyPath:\Person.#^PART_8^#]
_ = p[keyPath:\Person.friends[0].#^PART_9^#]
_ = p[keyPath:\[Person].[0].#^PART_10^#]
_ = p[keyPath:\Person.friends.[0].friends[0].friends[0].#^PART_11^#]
}
// PERSON-MEMBER: Begin completions, 4 items
// PERSON-MEMBER-NEXT: Decl[InstanceVar]/CurrNominal: name[#String#]; name=name
// PERSON-MEMBER-NEXT: Decl[InstanceVar]/CurrNominal: friends[#[Person]#]; name=friends
// PERSON-MEMBER-NEXT: Decl[InstanceVar]/CurrNominal: bestFriend[#Person?#]; name=bestFriend
// PERSON-MEMBER-NEXT: Decl[Subscript]/CurrNominal: [{#Int#}][#Int#]; name=[Int]