110 lines
2.8 KiB
Kotlin
Vendored
110 lines
2.8 KiB
Kotlin
Vendored
// EXPECTED_REACHABLE_NODES: 1288
|
|
/*
|
|
Modified test case from issue: https://youtrack.jetbrains.com/issue/KT-24542
|
|
*/
|
|
package foo
|
|
|
|
class Test() {
|
|
var output: String = ""
|
|
|
|
inline fun foo(): Boolean {
|
|
output += "foo "
|
|
return false
|
|
}
|
|
|
|
fun run(doBreak: Boolean, doContinue: Boolean) {
|
|
do {
|
|
output += "1 "
|
|
if (doBreak) break
|
|
output += "2 "
|
|
if (doContinue) continue
|
|
output += "3 "
|
|
}
|
|
while(foo())
|
|
}
|
|
|
|
fun runNested(doBreak: Boolean, doContinue: Boolean) {
|
|
do {
|
|
output += "0_1 "
|
|
|
|
do {
|
|
output += "1_1 "
|
|
if (doBreak) break
|
|
output += "1_2 "
|
|
if (doContinue) continue
|
|
output += "1_3 "
|
|
}
|
|
while(foo())
|
|
|
|
output += "0_2 "
|
|
|
|
if (doBreak) break
|
|
|
|
output += "0_3 "
|
|
|
|
do {
|
|
output += "2_1 "
|
|
if (doBreak) break
|
|
output += "2_2 "
|
|
if (doContinue) continue
|
|
output += "2_3 "
|
|
}
|
|
while(foo())
|
|
|
|
output += "0_4 "
|
|
|
|
if (doContinue) continue
|
|
|
|
output += "0_5 "
|
|
|
|
loop_with_label@ do {
|
|
output += "3_1 "
|
|
if (doBreak) break
|
|
output += "3_2 "
|
|
if (doContinue) continue
|
|
output += "3_3 "
|
|
}
|
|
while(foo())
|
|
|
|
output += "0_6 "
|
|
}
|
|
while(foo())
|
|
}
|
|
}
|
|
|
|
fun test(doBreak: Boolean, doContinue: Boolean): String {
|
|
var x = Test()
|
|
x.run(doBreak, doContinue)
|
|
return x.output
|
|
}
|
|
|
|
fun testNested(doBreak: Boolean, doContinue: Boolean): String {
|
|
var x = Test()
|
|
x.runNested(doBreak, doContinue)
|
|
return x.output
|
|
}
|
|
|
|
fun box(): String {
|
|
val test1 = test(true, true)
|
|
val test2 = test(true, false)
|
|
val test3 = test(false, true)
|
|
val test4 = test(false, false)
|
|
|
|
if (test1 != "1 ") return "Test1 output: ${test1}"
|
|
if (test2 != "1 ") return "Test2 output: ${test2}"
|
|
if (test3 != "1 2 foo ") return "Test3 output: ${test3}"
|
|
if (test4 != "1 2 3 foo ") return "Test4 output: ${test4}"
|
|
|
|
val testNested1 = testNested(true, true)
|
|
val testNested2 = testNested(true, false)
|
|
val testNested3 = testNested(false, true)
|
|
val testNested4 = testNested(false, false)
|
|
|
|
if (testNested1 != "0_1 1_1 0_2 ") return "testNested1 output: ${testNested1}"
|
|
if (testNested2 != "0_1 1_1 0_2 ") return "testNested2 output: ${testNested2}"
|
|
if (testNested3 != "0_1 1_1 1_2 foo 0_2 0_3 2_1 2_2 foo 0_4 foo ") return "testNested3 output: ${testNested3}"
|
|
if (testNested4 != "0_1 1_1 1_2 1_3 foo 0_2 0_3 2_1 2_2 2_3 foo 0_4 0_5 3_1 3_2 3_3 foo 0_6 foo ")
|
|
return "testNested4 output: ${testNested4}"
|
|
|
|
return "OK"
|
|
} |