// RUN: %swift-ide-test -code-completion -source-filename %s -code-completion-token=PUBLIC | %FileCheck %s --check-prefix=PUBLIC // RUN: %swift-ide-test -code-completion -source-filename %s -code-completion-token=INTERNAL | %FileCheck %s --check-prefix=INTERNAL // RUN: %swift-ide-test -code-completion -source-filename %s -code-completion-token=PRIVATE | %FileCheck %s --check-prefix=PRIVATE public protocol PubP {} public extension PubP { func availableP_availableC() {} func availableP_unavailableC() {} @available(*, unavailable) func unavailableP_availableC() {} @available(*, unavailable) func unavailableP_unavailableC() {} } struct TestForPubP: PubP { func availableP_availableC() {} @available(*, unavailable) func availableP_unavailableC() {} func unavailableP_availableC() {} @available(*, unavailable) func unavailableP_unavailableC() {} } func test(val: TestForPubP) { val.#^PUBLIC^# // PUBLIC: Begin completions, 4 items // PUBLIC-DAG: Keyword[self]/CurrNominal: self[#TestForPubP#]; // PUBLIC-DAG: Decl[InstanceMethod]/CurrNominal: unavailableP_availableC()[#Void#]; // PUBLIC-DAG: Decl[InstanceMethod]/Super: availableP_availableC()[#Void#]; // PUBLIC-DAG: Decl[InstanceMethod]/Super: availableP_unavailableC()[#Void#]; } protocol InternalP {} extension InternalP { func availableP_availableC() {} func availableP_unavailableC() {} @available(*, unavailable) func unavailableP_availableC() {} @available(*, unavailable) func unavailableP_unavailableC() {} } struct TestForInternalP: InternalP { func availableP_availableC() {} @available(*, unavailable) func availableP_unavailableC() {} func unavailableP_availableC() {} @available(*, unavailable) func unavailableP_unavailableC() {} } func test(val: TestForInternalP) { val.#^INTERNAL^# // INTERNAL: Begin completions, 4 items // INTERNAL-DAG: Keyword[self]/CurrNominal: self[#TestForInternalP#]; // INTERNAL-DAG: Decl[InstanceMethod]/CurrNominal: availableP_availableC()[#Void#]; // INTERNAL-DAG: Decl[InstanceMethod]/CurrNominal: unavailableP_availableC()[#Void#]; // INTERNAL-DAG: Decl[InstanceMethod]/Super: availableP_unavailableC()[#Void#]; } private protocol PrivP {} private extension PrivP { func availableP_availableC() {} func availableP_unavailableC() {} @available(*, unavailable) func unavailableP_availableC() {} @available(*, unavailable) func unavailableP_unavailableC() {} } struct TestForPrivP: PrivP { func availableP_availableC() {} @available(*, unavailable) func availableP_unavailableC() {} func unavailableP_availableC() {} @available(*, unavailable) func unavailableP_unavailableC() {} } func test(val: TestForPrivP) { val.#^PRIVATE^# // PRIVATE: Begin completions, 4 items // PRIVATE-DAG: Keyword[self]/CurrNominal: self[#TestForPrivP#]; // PRIVATE-DAG: Decl[InstanceMethod]/CurrNominal: availableP_availableC()[#Void#]; // PRIVATE-DAG: Decl[InstanceMethod]/CurrNominal: unavailableP_availableC()[#Void#]; // PRIVATE-DAG: Decl[InstanceMethod]/Super: availableP_unavailableC()[#Void#]; }