mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Improve the error recovery so that we get back either a RepeatWhileStmt, or at least a BraceStmt, which code-completion can use to dig out the local variables. rdar://problem/25912182
72 lines
2.2 KiB
Swift
72 lines
2.2 KiB
Swift
// RUN: %swift-ide-test -code-completion -code-completion-token=REPEAT_1 -source-filename=%s | FileCheck %s -check-prefix=REPEAT_1
|
|
// RUN: %swift-ide-test -code-completion -code-completion-token=REPEAT_2 -source-filename=%s | FileCheck %s -check-prefix=REPEAT_2
|
|
// RUN: %swift-ide-test -code-completion -code-completion-token=REPEAT_3 -source-filename=%s | FileCheck %s -check-prefix=REPEAT_3
|
|
// RUN: %swift-ide-test -code-completion -code-completion-token=REPEAT_4 -source-filename=%s | FileCheck %s -check-prefix=REPEAT_4
|
|
// RUN: %swift-ide-test -code-completion -code-completion-token=REPEAT_5 -source-filename=%s | FileCheck %s -check-prefix=REPEAT_5
|
|
// RUN: %swift-ide-test -code-completion -code-completion-token=REPEAT_COND_1 -source-filename=%s | FileCheck %s -check-prefix=REPEAT_COND_1
|
|
|
|
repeat {
|
|
let local1 = 1
|
|
#^REPEAT_1^#
|
|
} while true
|
|
// REPEAT_1-NOT: LocalVar
|
|
// REPEAT_1: Decl[LocalVar]/Local: local1[#Int#];
|
|
// REPEAT_1-NOT: LocalVar
|
|
|
|
repeat {
|
|
let local1 = 1
|
|
#^REPEAT_2^#
|
|
}
|
|
// REPEAT_2-NOT: LocalVar
|
|
// REPEAT_2: Decl[LocalVar]/Local: local1[#Int#];
|
|
// REPEAT_2-NOT: LocalVar
|
|
|
|
repeat {
|
|
let local1 = 1
|
|
repeat {
|
|
let local2 = 1
|
|
#^REPEAT_3^#
|
|
} while true
|
|
} while true
|
|
// REPEAT_3-NOT: LocalVar
|
|
// REPEAT_3: Decl[LocalVar]/Local: local2[#Int#];
|
|
// REPEAT_3-NOT: LocalVar
|
|
// REPEAT_3: Decl[LocalVar]/Local: local1[#Int#];
|
|
// REPEAT_3-NOT: LocalVar
|
|
|
|
func enclosingFunc1() {
|
|
let local0 = 1
|
|
repeat {
|
|
let local1 = 1
|
|
repeat {
|
|
let local2 = 1
|
|
#^REPEAT_4^#
|
|
} while true
|
|
} while true
|
|
}
|
|
// REPEAT_4-NOT: LocalVar
|
|
// REPEAT_4: Decl[LocalVar]/Local: local2[#Int#];
|
|
// REPEAT_4-NOT: LocalVar
|
|
// REPEAT_4: Decl[LocalVar]/Local: local1[#Int#];
|
|
// REPEAT_4-NOT: LocalVar
|
|
// REPEAT_4: Decl[LocalVar]/Local: local0[#Int#];
|
|
// REPEAT_4-NOT: LocalVar
|
|
|
|
repeat {
|
|
let local1 = 1
|
|
#^REPEAT_5^#
|
|
} while
|
|
// REPEAT_5-NOT: LocalVar
|
|
// REPEAT_5: Decl[LocalVar]/Local: local1[#Int#];
|
|
// REPEAT_5-NOT: LocalVar
|
|
|
|
repeat {
|
|
let local1 = 1
|
|
repeat {
|
|
let local2 = 1
|
|
} while #^REPEAT_COND_1^#
|
|
}
|
|
// REPEAT_COND_1-NOT: LocalVar
|
|
// REPEAT_COND_1: Decl[LocalVar]/Local: local1[#Int#];
|
|
// REPEAT_COND_1-NOT: LocalVar
|