Files
swift-mirror/test/IDE/complete_unqualified_lookup.swift
2024-03-04 13:33:40 +00:00

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
}
}