mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This reflects the fact that the attribute's only for compiler-internal use, and isn't really equivalent to C's asm attribute, since it doesn't change the calling convention to be C-compatible.
415 lines
17 KiB
Swift
415 lines
17 KiB
Swift
// RUN: sed -n -e '1,/NO_ERRORS_UP_TO_HERE$/ p' %s > %t_no_errors.swift
|
|
// RUN: %target-swift-frontend -parse -verify -disable-objc-attr-requires-foundation-module %t_no_errors.swift
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_PA -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_PA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_PA_EXT_1 -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_PA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_PA_EXT_2 -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_PA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_PB -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_PB < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PB < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_PA_PB -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_PA_PB < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PB < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BA -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BA_PA -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BA_PA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BA_PA_EXT1 -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BA_PA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BA_PA_EXT2 -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BA_PA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BA_PB -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BA_PB < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PB < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BB -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BB < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BB < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BE -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BE < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BE < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BE_PA -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BE_PA < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BE < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BE_PA_PE -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BE_PA_PE < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BE < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BE_PA_PE_EXT1 -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BE_PA_PE < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BE < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_BE_PA_PE_EXT2 -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_BE_PA_PE < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_BE < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PA < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CLASS_PEI_PE -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=CLASS_PEI_PE < %t.txt
|
|
// RUN: FileCheck %s -check-prefix=WITH_PEI < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=NESTED_NOMINAL -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=NESTED_NOMINAL < %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OMIT_KEYWORD1 -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=OMIT_KEYWORD1< %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OMIT_KEYWORD2 -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=OMIT_KEYWORD2< %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OMIT_KEYWORD3 -code-completion-keywords=false > %t.txt
|
|
// RUN: FileCheck %s -check-prefix=OMIT_KEYWORD3< %t.txt
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=OMIT_KEYWORD4 -code-completion-keywords=false | FileCheck %s -check-prefix=OMIT_KEYWORD4
|
|
|
|
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=HAS_THROWING -code-completion-keywords=false | FileCheck %s -check-prefix=HAS_THROWING
|
|
|
|
@objc
|
|
class TagPA {}
|
|
@objc
|
|
protocol ProtocolA {
|
|
init(fromProtocolA: Int)
|
|
|
|
func protoAFunc()
|
|
optional func protoAFuncOptional()
|
|
|
|
@noreturn
|
|
func protoAFuncWithAttr()
|
|
|
|
subscript(a: TagPA) -> Int { get }
|
|
|
|
var protoAVarRW: Int { get set }
|
|
var protoAVarRO: Int { get }
|
|
}
|
|
// WITH_PA: Begin completions
|
|
// WITH_PA-DAG: Decl[Constructor]/Super: init(fromProtocolA: Int) {|}{{; name=.+$}}
|
|
// WITH_PA-DAG: Decl[InstanceMethod]/Super: func protoAFunc() {|}{{; name=.+$}}
|
|
// WITH_PA-DAG: Decl[InstanceMethod]/Super: func protoAFuncOptional() {|}{{; name=.+$}}
|
|
// WITH_PA-DAG: Decl[InstanceMethod]/Super: @noreturn func protoAFuncWithAttr() {|}{{; name=.+$}}
|
|
// WITH_PA-DAG: Decl[InstanceVar]/Super: var protoAVarRW: Int{{; name=.+$}}
|
|
// WITH_PA-DAG: Decl[InstanceVar]/Super: var protoAVarRO: Int{{; name=.+$}}
|
|
// WITH_PA: End completions
|
|
|
|
struct TagPB {}
|
|
protocol ProtocolB : ProtocolA {
|
|
init(fromProtocolB: Int)
|
|
|
|
func protoBFunc()
|
|
|
|
subscript(a: TagPB) -> Int { get }
|
|
|
|
var protoBVarRW: Int { get set }
|
|
var protoBVarRO: Int { get }
|
|
}
|
|
// WITH_PB: Begin completions
|
|
// WITH_PB-DAG: Decl[Constructor]/Super: init(fromProtocolA: Int) {|}{{; name=.+$}}
|
|
// WITH_PB-DAG: Decl[InstanceMethod]/Super: func protoAFunc() {|}{{; name=.+$}}
|
|
// WITH_PB-DAG: Decl[InstanceMethod]/Super: @noreturn func protoAFuncWithAttr() {|}{{; name=.+$}}
|
|
// WITH_PB-DAG: Decl[InstanceMethod]/Super: func protoBFunc() {|}{{; name=.+$}}
|
|
// WITH_PB-DAG: Decl[InstanceVar]/Super: var protoBVarRW: Int{{; name=.+$}}
|
|
// WITH_PB-DAG: Decl[InstanceVar]/Super: var protoBVarRO: Int{{; name=.+$}}
|
|
// WITH_PB: End completions
|
|
|
|
struct TagPE {}
|
|
protocol ProtocolE {
|
|
init(fromProtocolE: Int)
|
|
|
|
func protoEFunc()
|
|
|
|
subscript(a: TagPE) -> Int { get }
|
|
|
|
var protoEVarRW: Int { get set }
|
|
var protoEVarRO: Int { get }
|
|
}
|
|
// WITH_PE: Begin completions
|
|
// WITH_PE-DAG: Decl[Constructor]/Super: init(fromProtocolE: Int) {|}{{; name=.+$}}
|
|
// WITH_PE-DAG: Decl[InstanceMethod]/Super: func protoEFunc() {|}{{; name=.+$}}
|
|
// WITH_PE-DAG: Decl[InstanceVar]/Super: var protoEVarRW: Int{{; name=.+$}}
|
|
// WITH_PE-DAG: Decl[InstanceVar]/Super: var protoEVarRO: Int{{; name=.+$}}
|
|
// WITH_PE: End completions
|
|
|
|
@noreturn @_silgen_name("exit")
|
|
func exit()
|
|
|
|
class BaseA {
|
|
init(fromBaseA: Int) {}
|
|
init(fromBaseAWithParamName foo: Int, withOther bar: Double) {}
|
|
convenience init(convenienceFromBaseA: Double) {
|
|
self.init(fromBaseA: 0)
|
|
}
|
|
|
|
func baseAFunc(foo x: Int) {}
|
|
func baseAFunc2(foo x: Int) {}
|
|
|
|
@noreturn
|
|
func baseAFuncWithAttr() {
|
|
exit()
|
|
}
|
|
|
|
var baseAVarRW: Int { get { return 0 } set {} }
|
|
var baseAVarRO: Int { return 0 }
|
|
}
|
|
// WITH_BA: Begin completions
|
|
// WITH_BA-DAG: Decl[Constructor]/Super: init(fromBaseA: Int) {|}{{; name=.+$}}
|
|
// WITH_BA-DAG: Decl[Constructor]/Super: init(fromBaseAWithParamName foo: Int, withOther bar: Double) {|}{{; name=.+$}}
|
|
// WITH_BA-DAG: Decl[InstanceMethod]/Super: override func baseAFunc(foo x: Int) {|}{{; name=.+$}}
|
|
// WITH_BA-DAG: Decl[InstanceMethod]/Super: override func baseAFunc2(foo x: Int) {|}{{; name=.+$}}
|
|
// WITH_BA-DAG: Decl[InstanceMethod]/Super: override @noreturn func baseAFuncWithAttr() {|}{{; name=.+$}}
|
|
// WITH_BA-DAG: Decl[InstanceVar]/Super: override var baseAVarRW: Int{{; name=.+$}}
|
|
// WITH_BA-DAG: Decl[InstanceVar]/Super: override var baseAVarRO: Int{{; name=.+$}}
|
|
// WITH_BA: End completions
|
|
|
|
class BaseB : BaseA {
|
|
override func baseAFunc2(foo x: Int) {}
|
|
|
|
init(fromBaseB: Int) {}
|
|
convenience init(convenienceFromBaseB: Double) {
|
|
self.init(fromBaseB: 0)
|
|
}
|
|
|
|
func baseBFunc() {}
|
|
|
|
var baseBVarRW: Int { get { return 0 } set {} }
|
|
var baseBVarRO: Int { return 0 }
|
|
}
|
|
// WITH_BB: Begin completions
|
|
// WITH_BB-DAG: Decl[InstanceMethod]/Super: override func baseAFunc(foo x: Int) {|}{{; name=.+$}}
|
|
// WITH_BB-DAG: Decl[InstanceMethod]/Super: override func baseAFunc2(foo x: Int) {|}{{; name=.+$}}
|
|
// WITH_BB-DAG: Decl[InstanceMethod]/Super: override @noreturn func baseAFuncWithAttr() {|}{{; name=.+$}}
|
|
// WITH_BB-DAG: Decl[Constructor]/Super: init(fromBaseB: Int) {|}{{; name=.+$}}
|
|
// WITH_BB-DAG: Decl[InstanceMethod]/Super: override func baseBFunc() {|}{{; name=.+$}}
|
|
// WITH_BB-DAG: Decl[InstanceVar]/Super: override var baseAVarRW: Int{{; name=.+$}}
|
|
// WITH_BB-DAG: Decl[InstanceVar]/Super: override var baseAVarRO: Int{{; name=.+$}}
|
|
// WITH_BB-DAG: Decl[InstanceVar]/Super: override var baseBVarRW: Int{{; name=.+$}}
|
|
// WITH_BB-DAG: Decl[InstanceVar]/Super: override var baseBVarRO: Int{{; name=.+$}}
|
|
// WITH_BB: End completions
|
|
|
|
class BaseE : ProtocolE {
|
|
required init(fromProtocolE: Int) {}
|
|
|
|
func protoEFunc() {}
|
|
|
|
subscript(a: TagPE) -> Int { return 0 }
|
|
|
|
var protoEVarRW: Int { get { return 0 } set {} }
|
|
var protoEVarRO: Int { return 0 }
|
|
|
|
init(fromBaseE: Int) {}
|
|
|
|
func baseEFunc() {}
|
|
|
|
var baseEVarRW: Int { get { return 0 } set {} }
|
|
var baseEVarRO: Int { return 0 }
|
|
}
|
|
// WITH_BE: Begin completions
|
|
// WITH_BE-DAG: Decl[Constructor]/Super: init(fromProtocolE: Int) {|}{{; name=.+$}}
|
|
// WITH_BE-DAG: Decl[InstanceMethod]/Super: override func protoEFunc() {|}{{; name=.+$}}
|
|
// WITH_BE-DAG: Decl[Constructor]/Super: init(fromBaseE: Int) {|}{{; name=.+$}}
|
|
// WITH_BE-DAG: Decl[InstanceMethod]/Super: override func baseEFunc() {|}{{; name=.+$}}
|
|
// WITH_BE-DAG: Decl[InstanceVar]/Super: override var protoEVarRW: Int{{; name=.+$}}
|
|
// WITH_BE-DAG: Decl[InstanceVar]/Super: override var protoEVarRO: Int{{; name=.+$}}
|
|
// WITH_BE-DAG: Decl[InstanceVar]/Super: override var baseEVarRW: Int{{; name=.+$}}
|
|
// WITH_BE-DAG: Decl[InstanceVar]/Super: override var baseEVarRO: Int{{; name=.+$}}
|
|
// WITH_BE: End completions
|
|
|
|
class ProtocolEImpl /* : ProtocolE but does not implement the protocol */ {
|
|
init(fromProtocolE: Int) {}
|
|
|
|
func protoEFunc() {}
|
|
|
|
subscript(a: TagPE) -> Int { return 0 }
|
|
|
|
var protoEVarRW: Int { get { return 0 } set {} }
|
|
var protoEVarRO: Int { return 0 }
|
|
}
|
|
// WITH_PEI: Begin completions
|
|
// WITH_PEI-DAG: Decl[Constructor]/Super: init(fromProtocolE: Int) {|}{{; name=.+$}}
|
|
// WITH_PEI-DAG: Decl[InstanceMethod]/Super: override func protoEFunc() {|}{{; name=.+$}}
|
|
// WITH_PEI-DAG: Decl[InstanceVar]/Super: override var protoEVarRW: Int{{; name=.+$}}
|
|
// WITH_PEI-DAG: Decl[InstanceVar]/Super: override var protoEVarRO: Int{{; name=.+$}}
|
|
// WITH_PEI: End completions
|
|
|
|
// NO_ERRORS_UP_TO_HERE
|
|
|
|
class TestClass_PA : ProtocolA {
|
|
func ERROR() {}
|
|
|
|
#^CLASS_PA^#
|
|
}
|
|
// CLASS_PA: Begin completions, 6 items
|
|
|
|
class TestClass_PA_Ext {
|
|
func ERROR1() {}
|
|
#^CLASS_PA_EXT_1^#
|
|
}
|
|
extension TestClass_PA_Ext : ProtocolA {
|
|
func ERROR2() {}
|
|
#^CLASS_PA_EXT_2^#
|
|
}
|
|
|
|
class TestClass_PB : ProtocolB {
|
|
#^CLASS_PB^#
|
|
}
|
|
// CLASS_PB: Begin completions, 10 items
|
|
|
|
class TestClass_PA_PB : ProtocolA, ProtocolB {
|
|
#^CLASS_PA_PB^#
|
|
}
|
|
// CLASS_PA_PB: Begin completions, 10 items
|
|
|
|
class TestClass_BA : BaseA {
|
|
#^CLASS_BA^#
|
|
}
|
|
// CLASS_BA: Begin completions, 7 items
|
|
|
|
class TestClass_BA_PA : BaseA, ProtocolA {
|
|
#^CLASS_BA_PA^#
|
|
}
|
|
// CLASS_BA_PA: Begin completions, 13 items
|
|
|
|
class TestClass_BA_PA_Ext : BaseA {
|
|
#^CLASS_BA_PA_EXT1^#
|
|
}
|
|
|
|
extension TestClass_BA_PA_Ext : ProtocolA {
|
|
#^CLASS_BA_PA_EXT2^#
|
|
}
|
|
|
|
class TestClass_BA_PB : BaseA, ProtocolB {
|
|
#^CLASS_BA_PB^#
|
|
}
|
|
// CLASS_BA_PB: Begin completions, 16 items
|
|
|
|
class TestClass_BB : BaseB {
|
|
#^CLASS_BB^#
|
|
}
|
|
// CLASS_BB: Begin completions, 9 items
|
|
|
|
class TestClass_BE : BaseE {
|
|
#^CLASS_BE^#
|
|
}
|
|
// CLASS_BE: Begin completions, 8 items
|
|
|
|
class TestClass_BE_PA : BaseE, ProtocolA {
|
|
#^CLASS_BE_PA^#
|
|
}
|
|
// CLASS_BE_PA: Begin completions, 14 items
|
|
|
|
class TestClass_BE_PA_PE : BaseE, ProtocolA, ProtocolE {
|
|
#^CLASS_BE_PA_PE^#
|
|
}
|
|
// CLASS_BE_PA_PE: Begin completions, 14 items
|
|
|
|
class TestClass_BE_PA_PE_Ext : BaseE {
|
|
#^CLASS_BE_PA_PE_EXT1^#
|
|
}
|
|
extension TestClass_BE_PA_PE_Ext : ProtocolA, ProtocolE {
|
|
#^CLASS_BE_PA_PE_EXT2^#
|
|
}
|
|
|
|
class TestClass_PEI_PE : ProtocolEImpl, ProtocolE {
|
|
#^CLASS_PEI_PE^#
|
|
}
|
|
// CLASS_PEI_PE: Begin completions, 4 items
|
|
|
|
class OuterNominal : ProtocolA {
|
|
class Inner {
|
|
#^NESTED_NOMINAL^#
|
|
}
|
|
}
|
|
// NESTED_NOMINAL: found code completion token
|
|
// NESTED_NOMINAL-NOT: Begin completions
|
|
|
|
class OmitKW1 : ProtocolA {
|
|
override#^OMIT_KEYWORD1^#
|
|
}
|
|
|
|
//OMIT_KEYWORD1: Begin completions
|
|
//OMIT_KEYWORD1-DAG: Decl[Constructor]/Super: init(fromProtocolA: Int) {|}; name=init(fromProtocolA: Int){{$}}
|
|
//OMIT_KEYWORD1-DAG: Decl[InstanceMethod]/Super: func protoAFunc() {|}; name=protoAFunc(){{$}}
|
|
//OMIT_KEYWORD1-DAG: Decl[InstanceMethod]/Super: func protoAFuncOptional() {|}; name=protoAFuncOptional(){{$}}
|
|
//OMIT_KEYWORD1-DAG: Decl[InstanceMethod]/Super: @noreturn func protoAFuncWithAttr() {|}; name=protoAFuncWithAttr(){{$}}
|
|
// OMIT_KEYWORD1-DAG: Decl[InstanceVar]/Super: var protoAVarRW: Int{{; name=.+$}}
|
|
// OMIT_KEYWORD1: End completions
|
|
|
|
class OmitKW2 : ProtocolA {
|
|
override func#^OMIT_KEYWORD2^#
|
|
}
|
|
|
|
//OMIT_KEYWORD2: Begin completions
|
|
//OMIT_KEYWORD2-DAG: Decl[Constructor]/Super: init(fromProtocolA: Int) {|}; name=init(fromProtocolA: Int){{$}}
|
|
//OMIT_KEYWORD2-DAG: Decl[InstanceMethod]/Super: protoAFunc() {|}; name=protoAFunc(){{$}}
|
|
//OMIT_KEYWORD2-DAG: Decl[InstanceMethod]/Super: protoAFuncOptional() {|}; name=protoAFuncOptional(){{$}}
|
|
//OMIT_KEYWORD2-DAG: Decl[InstanceMethod]/Super: protoAFuncWithAttr() {|}; name=protoAFuncWithAttr(){{$}}
|
|
// OMIT_KEYWORD2-NOT: Decl[InstanceVar]/Super: var protoAVarRW: Int{{; name=.+$}}
|
|
// OMIT_KEYWORD2: End completions
|
|
|
|
class OmitKW3 : ProtocolA {
|
|
func#^OMIT_KEYWORD3^#
|
|
}
|
|
|
|
//OMIT_KEYWORD3: Begin completions
|
|
//OMIT_KEYWORD3-DAG: Decl[Constructor]/Super: init(fromProtocolA: Int) {|}; name=init(fromProtocolA: Int){{$}}
|
|
//OMIT_KEYWORD3-DAG: Decl[InstanceMethod]/Super: protoAFunc() {|}; name=protoAFunc(){{$}}
|
|
//OMIT_KEYWORD3-DAG: Decl[InstanceMethod]/Super: protoAFuncOptional() {|}; name=protoAFuncOptional(){{$}}
|
|
//OMIT_KEYWORD3-DAG: Decl[InstanceMethod]/Super: protoAFuncWithAttr() {|}; name=protoAFuncWithAttr(){{$}}
|
|
// OMIT_KEYWORD3-NOT: Decl[InstanceVar]/Super: var protoAVarRW: Int{{; name=.+$}}
|
|
// OMIT_KEYWORD3: End completions
|
|
|
|
class OmitKW4: ProtocolA {
|
|
var #^OMIT_KEYWORD4^#
|
|
}
|
|
|
|
// OMIT_KEYWORD4-NOT: Decl[InstanceMethod]
|
|
// OMIT_KEYWORD4: Decl[InstanceVar]/Super: protoAVarRW: Int{{; name=.+$}}
|
|
// OMIT_KEYWORD4-NOT: Decl[InstanceMethod]
|
|
|
|
protocol HasThrowingProtocol {
|
|
func foo() throws
|
|
}
|
|
|
|
class HasThrowing {
|
|
func bar() throws {}
|
|
func baz(x: () throws -> ()) rethrows {}
|
|
init() throws {}
|
|
}
|
|
class TestClassWithThrows : HasThrowing, HasThrowingProtocol {
|
|
#^HAS_THROWING^#
|
|
}
|
|
// HAS_THROWING: Begin completions
|
|
// HAS_THROWING-DAG: Decl[InstanceMethod]/Super: func foo() throws {|}; name=foo() throws
|
|
// HAS_THROWING-DAG: Decl[InstanceMethod]/Super: override func bar() throws {|}; name=bar() throws
|
|
// HAS_THROWING-DAG: Decl[InstanceMethod]/Super: override func baz(x: () throws -> ()) rethrows {|}; name=baz(x: () throws -> ()) rethrows
|
|
// HAS_THROWING-DAG: Decl[Constructor]/Super: init() throws {|}; name=init() throws
|
|
// HAS_THROWING: End completions
|