Fix for KT-9022: Wrong result when use break in if condition

#KT-9022 Fixed
This commit is contained in:
Michael Bogdanov
2015-11-11 13:17:18 +03:00
parent 20ca8cd435
commit 3f995935d3
6 changed files with 125 additions and 33 deletions
@@ -0,0 +1,9 @@
fun box(): String {
var cycle = true;
while (true) {
if (true && break) {
return "fail"
}
}
return "OK"
}
@@ -0,0 +1,9 @@
fun box(): String {
var cycle = true;
while (true) {
if (true || break) {
return "OK"
}
}
return "fail"
}
@@ -0,0 +1,26 @@
fun testOr(b: Boolean): Boolean {
return b || return !b;
}
fun testOr(): Boolean {
return true || return false;
}
fun testAnd(b: Boolean): Boolean {
return b && return !b;
}
fun testAnd(): Boolean {
return true && return false;
}
fun box(): String {
if (testOr(false) != true) return "fail 1"
if (testOr(true) != true) return "fail 2"
if (testAnd(false) != false) return "fail 3"
if (testAnd(true) != false) return "fail 4"
if (testOr() != true) return "fail 5"
if (testAnd() != false) return "fail 6"
return "OK"
}
@@ -0,0 +1,9 @@
fun box(): String {
var cycle = true;
while (true) {
if (true || throw java.lang.RuntimeException()) {
return "OK"
}
}
return "fail"
}