Support 'break' and 'continue' in expressions
- generate fake jump instructions so that we can always analyze stack depths - fix stack before break and continue by dropping excessive elements (e.g., *a*.foo(*b*, c?:continue)) - Analyzer rewritten in Kotlin, with more flexible control of CFG traversal #Fixed KT-3340 #Fixed KT-4258 #Fixed KT-7941
This commit is contained in:
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
inline fun bar(block: () -> String) : String {
|
||||
return block()
|
||||
}
|
||||
|
||||
inline fun bar2() : String {
|
||||
while (true) break
|
||||
return bar { return "def" }
|
||||
}
|
||||
|
||||
fun foobar(x: String, y: String, z: String) = x + y + z
|
||||
|
||||
fun box(): String {
|
||||
val test = foobar("abc", bar2(), "ghi")
|
||||
return if (test == "abcdefghi")
|
||||
"OK"
|
||||
else "Failed, test=$test"
|
||||
}
|
||||
Reference in New Issue
Block a user