JS backend: support for while/do while with complex conditions
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
package foo
|
||||
|
||||
var global: String = ""
|
||||
|
||||
fun box(): String {
|
||||
var i:Int = 0
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
do i++ while(try { global += "A"; i } finally {} < 3)
|
||||
assertEquals("AAA", global)
|
||||
assertEquals(3, i)
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
do {
|
||||
if (i==3) break
|
||||
i++
|
||||
} while(try { global += "A"; i } finally {} < 10)
|
||||
assertEquals("AAA", global)
|
||||
assertEquals(3, i)
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
do
|
||||
try { global += "B"; i++} finally {}
|
||||
while( try { global += "A"; i } finally{} < 3)
|
||||
assertEquals("BABABA", global)
|
||||
assertEquals(3, i)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package foo
|
||||
|
||||
var global: String = ""
|
||||
|
||||
fun box(): String {
|
||||
|
||||
var i = 0
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
do {
|
||||
if (i<3) {i++; continue}
|
||||
break
|
||||
} while(try { global += "A"; i } finally {} < 10)
|
||||
assertEquals("AAA", global)
|
||||
assertEquals(3, i)
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
@labelA do {
|
||||
if (i<3) {i++; continue@labelA}
|
||||
break
|
||||
} while(try { global += "A"; i } finally {} < 10)
|
||||
assertEquals("AAA", global)
|
||||
assertEquals(3, i)
|
||||
|
||||
i = 0
|
||||
var j = 0
|
||||
global = ""
|
||||
@outer do {
|
||||
j = 0
|
||||
while( try {global += "B"; j++ } finally {} < 2) {
|
||||
if (j==1) continue@outer
|
||||
}
|
||||
} while(try { global += "A"; i++ } finally {} < 3)
|
||||
assertEquals("BABABABA", global)
|
||||
assertEquals(4, i)
|
||||
assertEquals(1, j)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package foo
|
||||
|
||||
var global: String = ""
|
||||
|
||||
fun box(): String {
|
||||
var i:Int = 0
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
while(try { global += "A"; i } finally {} < 3)
|
||||
i++
|
||||
assertEquals("AAAA", global)
|
||||
assertEquals(3, i)
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
while(try { global += "A"; i } finally {} < 10) {
|
||||
if (i==3) break
|
||||
i++
|
||||
}
|
||||
assertEquals("AAAA", global)
|
||||
assertEquals(3, i)
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
while( try { global += "A"; i } finally{} < 3)
|
||||
try { global += "B"; i++} finally {}
|
||||
assertEquals("ABABABA", global)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package foo
|
||||
|
||||
var global: String = ""
|
||||
|
||||
fun box(): String {
|
||||
|
||||
var i = 0
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
while(try { global += "A"; i } finally {} < 10) {
|
||||
if (i<3) {i++; continue}
|
||||
break
|
||||
}
|
||||
assertEquals("AAAA", global)
|
||||
assertEquals(3, i)
|
||||
|
||||
i = 0
|
||||
global = ""
|
||||
@labelA while(try { global += "A"; i } finally {} < 10) {
|
||||
if (i<3) {i++; continue@labelA}
|
||||
break
|
||||
}
|
||||
assertEquals("AAAA", global)
|
||||
assertEquals(3, i)
|
||||
|
||||
i = 0
|
||||
var j = 0
|
||||
global = ""
|
||||
@outer while(try { global += "A"; i++ } finally {} < 3) {
|
||||
j = 0
|
||||
while( try {global += "B"; j++ } finally {} < 2) {
|
||||
if (j==1) continue@outer
|
||||
}
|
||||
}
|
||||
assertEquals("ABABABA", global)
|
||||
assertEquals(4, i)
|
||||
assertEquals(1, j)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user