mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
117 lines
4.6 KiB
Swift
117 lines
4.6 KiB
Swift
// 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
|
|
}
|
|
}
|