1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
// RUN: %batch-code-completion
// STRUCT_INSTANCE-NOT: init()
// STRUCT_INSTANCE-NOT: staticVar
// STRUCT_INSTANCE-NOT: staticFunc
// STRUCT_INSTANCE-DAG: Decl[InstanceVar]/CurrNominal: instanceVar[#Int#];
// STRUCT_INSTANCE-DAG: Decl[InstanceMethod]/CurrNominal: instanceFunc()[#Int#];
// STRUCT_INSTANCE-NOT: init()
// STRUCT_INSTANCE-NOT: staticVar
// STRUCT_INSTANCE-NOT: staticFunc
// STRUCT_STATIC-NOT: init()
// STRUCT_STATIC-NOT: instanceVar
// STRUCT_STATIC-DAG: Decl[StaticVar]/CurrNominal: staticVar[#Int#];
// STRUCT_STATIC-DAG: Decl[StaticMethod]/CurrNominal: staticFunc()[#Int#];
// STRUCT_STATIC-DAG: Decl[InstanceMethod]/CurrNominal: instanceFunc({#(self): MyStruct#})[#() -> Int#];
// STRUCT_STATIC-NOT: init()
// STRUCT_STATIC-NOT: instanceVar
struct MyStruct {
init() { self = MyEnum.east }
static var staticVar: Int { 1 }
static func staticFunc() -> Int { 1 }
var instanceVar: Int { 1 }
func instanceFunc() -> Int { 1 }
var testInstanceVarInit: String = (#^STRUCT_INSTANCE_VAR_INIT?check=STRUCT_STATIC^#)
static var testStaticVarInit: String = (#^STRUCT_STATIC_VAR_INIT?check=STRUCT_STATIC^#)
lazy var testLazyVarInit: String = (#^STRUCT_LAZY_VAR_INIT?check=STRUCT_INSTANCE^#)
var testInstanceVar: String {
#^STRUCT_INSTANCE_VAR_BODY?check=STRUCT_INSTANCE^#
}
static var testStaticVar: String {
#^STRUCT_STATIC_VAR_BODY?check=STRUCT_STATIC^#
}
init(testInit: String = #^STRUCT_INITIALIZER_DEFAULTPARAM?check=STRUCT_STATIC^#) {
#^STRUCT_INITIALIZER_BODY?check=STRUCT_INSTANCE^#
}
func testInstanceMethod(x: String = #^STRUCT_INSTANCE_FUNC_DEFAULTPARAM?check=STRUCT_STATIC^#) {
#^STRUCT_INSTANCE_FUNC_BODY?check=STRUCT_INSTANCE^#
}
static func testStaticMethod(x: String = #^STRUCT_STATIC_FUNC_DEFAULTPARAM?check=STRUCT_STATIC^#) {
#^STRUCT_STATIC_FUNC_BODY?check=STRUCT_STATIC^#
}
subscript(testInstanceSubscript idx: String = #^STRUCT_INSTANCE_SUBSCRIPT_DEFAULTPARAM?check=STRUCT_STATIC^#) {
#^STRUCT_INSTANCE_SUBSCRIPT_BODY?check=STRUCT_INSTANCE^#
}
static subscript(testStaticSubscript idx: String = #^STRUCT_STATIC_SUBSCRIPT_DEFAULTPARAM?check=STRUCT_STATIC^#) {
#^STRUCT_STATIC_SUBSCRIPT_BODY?check=STRUCT_STATIC^#
}
}
// ENUM_INSTANCE-NOT: east
// ENUM_INSTANCE-NOT: west
// ENUM_INSTANCE-NOT: init()
// ENUM_INSTANCE-NOT: staticVar
// ENUM_INSTANCE-NOT: staticFunc
// ENUM_INSTANCE-DAG: Decl[InstanceVar]/CurrNominal: instanceVar[#Int#];
// ENUM_INSTANCE-DAG: Decl[InstanceMethod]/CurrNominal: instanceFunc()[#Int#];
// ENUM_INSTANCE-NOT: east
// ENUM_INSTANCE-NOT: west
// ENUM_INSTANCE-NOT: init()
// ENUM_INSTANCE-NOT: staticVar
// ENUM_INSTANCE-NOT: staticFunc
// ENUM_STATIC-NOT: init()
// ENUM_STATIC-NOT: instanceVar
// ENUM_STATIC-DAG: Decl[EnumElement]/CurrNominal: east[#MyEnum#];
// ENUM_STATIC-DAG: Decl[EnumElement]/CurrNominal: west[#MyEnum#];
// ENUM_STATIC-DAG: Decl[StaticVar]/CurrNominal: staticVar[#Int#];
// ENUM_STATIC-DAG: Decl[StaticMethod]/CurrNominal: staticFunc()[#Int#];
// ENUM_STATIC-DAG: Decl[InstanceMethod]/CurrNominal: instanceFunc({#(self): MyEnum#})[#() -> Int#];
// ENUM_STATIC-NOT: init()
// ENUM_STATIC-NOT: instanceVar
enum MyEnum {
case east, west
init() { self = MyEnum.east }
static var staticVar: Int = 1
static func staticFunc() -> Int { 1 }
var instanceVar: Int { 1 }
func instanceFunc() -> Int { 1 }
static var testStaticVarInit: String = (#^ENUM_STATIC_VAR_INIT?check=ENUM_STATIC^#)
var testInstanceVar: String {
#^ENUM_INSTANCE_VAR_BODY?check=ENUM_INSTANCE^#
}
static var testStaticVar: String {
#^ENUM_STATIC_VAR_BODY?check=ENUM_STATIC^#
}
init(testInit: String = #^ENUM_INITIALIZER_DEFAULTPARAM?check=ENUM_STATIC^#) {
#^ENUM_INITIALIZER_BODY?check=ENUM_INSTANCE^#
}
func testInstanceMethod(x: String = #^ENUM_INSTANCE_FUNC_DEFAULTPARAM?check=ENUM_STATIC^#) {
#^ENUM_INSTANCE_FUNC_BODY?check=ENUM_INSTANCE^#
}
static func testStaticMethod(x: String = #^ENUM_STATIC_FUNC_DEFAULTPARAM?check=ENUM_STATIC^#) {
#^ENUM_STATIC_FUNC_BODY?check=ENUM_STATIC^#
}
subscript(testInstanceSubscript idx: String = #^ENUM_INSTANCE_SUBSCRIPT_DEFAULTPARAM?check=ENUM_STATIC^#) {
#^ENUM_INSTANCE_SUBSCRIPT_BODY?check=ENUM_INSTANCE^#
}
static subscript(testStaticSubscript idx: String = #^ENUM_STATIC_SUBSCRIPT_DEFAULTPARAM?check=ENUM_STATIC^#) {
#^ENUM_STATIC_SUBSCRIPT_BODY?check=ENUM_STATIC^#
}
}
// rdar://123790296
func testBindingFromDefer(_ x: Int?) {
guard let bar = x else { return }
defer {
#^BINDING_FROM_DEFER^#
// BINDING_FROM_DEFER-DAG: Decl[LocalVar]/Local: x[#Int?#]; name=x
// BINDING_FROM_DEFER-DAG: Decl[LocalVar]/Local: bar[#Int#]; name=bar
}
}
|