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
|
// RUN: %batch-code-completion
let topLevelOpt: Int?
do {
let topLevelLocalOpt: Int?
let topLevelLocalNonOpt: Int
if let #^TOPLEVEL_IF_LET?check=TOPLEVEL^#
// TOPLEVEL: Begin completions, 1 items
// TOPLEVEL-DAG: Decl[LocalVar]/Local: topLevelLocalOpt[#Int?#];
// FIXME: show 'topLevelOpt'
}
struct MyStruct<T> {
var propOpt: Int?
var propNonOpt: Int
var propGenOpt: T?
var propGenNonOpt: T
func testMethod<U>(paramGenOpt: U?, paramGenNonOpt: U, paramOpt: Int?, paramNonOpt: Int) {
var localOpt: Int?
var localNonOpt: Int
var localGenOpt: U?
var localGenNonOpt: U
do {
if let #^IF_LET?check=IN_FUNC^#
}
do {
if var #^IF_VAR?check=IN_FUNC^#
}
do {
if true {} else if let #^ELSEIF_LET?check=IN_FUNC^#
}
do {
if true {} else if var #^ELSEIF_VAR?check=IN_FUNC^#
}
do {
guard let #^GUARD_LET?check=IN_FUNC^#
}
do {
guard var #^GUARD_VAR?check=IN_FUNC^#
}
do {
while let #^WHILE_LET?check=IN_FUNC^#
}
do {
while var #^WHILE_VAR?check=IN_FUNC^#
}
// IN_FUNC: Begin completions, 6 items
// IN_FUNC-DAG: Decl[LocalVar]/Local: localOpt[#Int?#];
// IN_FUNC-DAG: Decl[LocalVar]/Local: localGenOpt[#U?#];
// IN_FUNC-DAG: Decl[LocalVar]/Local: paramGenOpt[#U?#];
// IN_FUNC-DAG: Decl[LocalVar]/Local: paramOpt[#Int?#];
// IN_FUNC-DAG: Decl[InstanceVar]/CurrNominal: propOpt[#Int?#];
// IN_FUNC-DAG: Decl[InstanceVar]/CurrNominal: propGenOpt[#T?#];
// IN_FUNC-NOT: NonOpt
}
}
func testPreviousElements() {
let localOptOpt: Int??
if let localOpt = localOptOpt, let localNonOpt = localOpt, let #^PREV_ELEMENT^#
// PREV_ELEMENT: Begin completions, 2 items
// PREV_ELEMENT-DAG: Decl[LocalVar]/Local: localOptOpt[#Int??#];
// PREV_ELEMENT-DAG: Decl[LocalVar]/Local: localOpt[#Int?#];
// PREV_ELEMENT-NOT: NonOpt
}
|