blob: 28fa4037a781681b6996ee13675c493350eb5bb0 [file] [log] [blame]
// RUN: %swift-ide-test -code-completion -source-filename %s -code-completion-token FUNCTIONBODY -debug-forbid-typecheck-prefix FORBIDDEN | %FileCheck %s
// RUN: %swift-ide-test -code-completion -source-filename %s -code-completion-token LOCALFUNC_PARAMINIT -debug-forbid-typecheck-prefix FORBIDDEN | %FileCheck %s
// RUN: %swift-ide-test -code-completion -source-filename %s -code-completion-token TOPLEVEL -debug-forbid-typecheck-prefix FORBIDDEN | %FileCheck %s
struct FORBIDDEN_Struct {
func FORBIDDEN_method() -> Int? { 1 }
}
struct MyStruct {
var x: Int { 1 }
var y: Int { 1 }
}
let globalUnrelated = FORBIDDEN_Struct();
guard let globalValueOpt = MyStruct() as MyStruct?? else {
let localUnrelated = FORBIDDEN_Struct();
fatalError()
}
func test(valueOptOpt: MyStruct??) {
let FORBIDDEN_localVar = 1
let unrelated = FORBIDDEN_Struct()
let valueOpt = valueOptOpt!
guard let a = unrelated.FORBIDDEN_method() else {
return
}
guard let value = valueOpt else {
let FORBIDDEN_localVar2 = 1
return
}
func localFunc(_ x: Int) -> Int {
let FORBIDDEN_unrelatedLocal = FORBIDDEN_Struct()
return 1
}
if (value.x == 1) {
let unrelated2 = FORBIDDEN_Struct()
switch value.x {
case let x where x < 2:
let unrelated3 = FORBIDDEN_Struct()
_ = { xx in
let unrelated4 = FORBIDDEN_Struct()
if xx == localFunc(value.#^FUNCTIONBODY^#) {
let unrelated5 = FORBIDDEN_Struct()
return 1
}
func innerFunc(x: Int = value.#^LOCALFUNC_PARAMINIT^#) {
let unrelated6 = FORBIDDEN_Struct()
}
return 0;
} (x)
default:
break
}
}
}
let globalValue = globalValueOpt!
let FORBIDDEN_globalVar = 1
switch globalValue.x {
case let x where x < 2:
if x == globalValue.#^TOPLEVEL^# {}
default:
break
}
// CHECK: Begin completions, 3 items
// CHECK-DAG: Keyword[self]/CurrNominal: self[#MyStruct#]; name=self
// CHECK-DAG: Decl[InstanceVar]/CurrNominal/TypeRelation[Identical]: x[#Int#]; name=x
// CHECK-DAG: Decl[InstanceVar]/CurrNominal/TypeRelation[Identical]: y[#Int#]; name=y
// CHECK: End completions