JS: move expressions test to box tests
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package foo
|
||||
|
||||
val a1 = arrayOfNulls<Int>(10)
|
||||
|
||||
fun box(): String {
|
||||
var c = 0
|
||||
var d = 0
|
||||
a1[3] = 3
|
||||
a1[5] = 5
|
||||
|
||||
for (a: Int? in a1) {
|
||||
if (a != null) {
|
||||
c += 1;
|
||||
}
|
||||
else {
|
||||
d += 1
|
||||
}
|
||||
}
|
||||
assertEquals(2, c)
|
||||
assertEquals(8, d)
|
||||
|
||||
var s: String = ""
|
||||
for(i in arrayOf(0,1,2))
|
||||
try { s += "A${i}:"} finally {}
|
||||
assertEquals("A0:A1:A2:", s)
|
||||
|
||||
var sLong = 0L
|
||||
var aLong = longArrayOf(1,2,3,4,5,6,7,8,9,10)
|
||||
for(i in aLong)
|
||||
sLong += i
|
||||
assertEquals(55L, sLong)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package foo
|
||||
|
||||
var global: String = ""
|
||||
|
||||
fun up(s: String, value: Int): Int {
|
||||
global += s
|
||||
return value
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
|
||||
// http://youtrack.jetbrains.com/issue/KT-5262
|
||||
// JS: wrong code for `for` over range when start greater end
|
||||
var n: Int = 0
|
||||
for(i in 3..0)
|
||||
n++
|
||||
assertEquals(0, n)
|
||||
|
||||
for(i in 0..3)
|
||||
n++
|
||||
assertEquals(4, n)
|
||||
|
||||
// Evaluation order
|
||||
for (i in up("A", 0)..up("B", 5)) {
|
||||
}
|
||||
assertEquals("AB", global)
|
||||
|
||||
global = ""
|
||||
for (i in try { up("A", 0) } finally {} ..up("B", 5)) {
|
||||
}
|
||||
assertEquals("AB", global)
|
||||
|
||||
global = ""
|
||||
for (i in up("A", 0).. try { up("B", 5)} finally {}) {
|
||||
}
|
||||
assertEquals("AB", global)
|
||||
|
||||
global = ""
|
||||
for (i in try { up("A", 0) } finally {}.. try { up("B", 5)} finally {}) {
|
||||
}
|
||||
assertEquals("AB", global)
|
||||
|
||||
var sLong = 0L
|
||||
for(i in 0L..10L)
|
||||
sLong += i
|
||||
assertEquals(55L, sLong)
|
||||
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
var n = 0
|
||||
var r = 3..0
|
||||
for(i in r)
|
||||
n++
|
||||
assertEquals(0, n)
|
||||
|
||||
r = 0..3
|
||||
for(i in r)
|
||||
n++
|
||||
assertEquals(4, n)
|
||||
|
||||
var sLong = 0L
|
||||
var rLong = 0L..10L
|
||||
for(i in rLong)
|
||||
sLong += i
|
||||
assertEquals(55L, sLong)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package foo
|
||||
|
||||
class Iter(val upper: Int) {
|
||||
var count: Int = 0
|
||||
operator fun hasNext(): Boolean = count < upper
|
||||
operator fun next(): Int = count++
|
||||
}
|
||||
|
||||
class A(val upper: Int) {
|
||||
operator fun iterator(): Iter = Iter(upper)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var n = 0
|
||||
for(i in A(10)) {
|
||||
n++
|
||||
}
|
||||
assertEquals(10, n)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package foo
|
||||
|
||||
val a1 = arrayOfNulls<Int>(0)
|
||||
|
||||
fun box(): String {
|
||||
for (a in a1) {
|
||||
return "fail"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
var s: String = ""
|
||||
|
||||
s = ""
|
||||
for(i in 0..2)
|
||||
try { s += "A"} finally {}
|
||||
assertEquals("AAA", s)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
for (i in 0..5);
|
||||
|
||||
val r = 0..5
|
||||
for (i in r);
|
||||
|
||||
for (i in arrayOf(1, 2, 3));
|
||||
|
||||
for (i in arrayOf(1, 2, 3).asList());
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+45
@@ -0,0 +1,45 @@
|
||||
package foo
|
||||
|
||||
var log = ""
|
||||
|
||||
class T(val id: Int) {
|
||||
operator fun component1(): Int {
|
||||
log += "($id).component1();"
|
||||
return 1
|
||||
}
|
||||
operator fun component2(): String {
|
||||
log += "($id).component2();"
|
||||
return "1"
|
||||
}
|
||||
}
|
||||
|
||||
class C {
|
||||
operator fun iterator(): Iterator<T> = object: Iterator<T> {
|
||||
var i = 0
|
||||
var data = arrayOf(T(3), T(1), T(2))
|
||||
override fun hasNext(): Boolean {
|
||||
log += "C.hasNext();"
|
||||
return i < data.size
|
||||
}
|
||||
|
||||
override fun next(): T {
|
||||
log += "C.next();"
|
||||
return data[i++]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
for ((a, b) in arrayOf(T(3), T(1), T(2)));
|
||||
assertEquals("(3).component1();(3).component2();(1).component1();(1).component2();(2).component1();(2).component2();", log)
|
||||
|
||||
|
||||
log = ""
|
||||
for ((a, b) in C());
|
||||
assertEquals("C.hasNext();C.next();(3).component1();(3).component2();C.hasNext();C.next();" +
|
||||
"(1).component1();(1).component2();C.hasNext();C.next();" +
|
||||
"(2).component1();(2).component2();C.hasNext();", log)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package foo
|
||||
|
||||
val a1 = arrayOfNulls<Int>(0)
|
||||
|
||||
fun box(): String {
|
||||
var bar = 33
|
||||
outer@ for (a in arrayOf(1, 2)) {
|
||||
for (b in arrayOf(1, 4)) {
|
||||
break@outer
|
||||
}
|
||||
bar = 42
|
||||
}
|
||||
if (bar != 33) return "fail: $bar"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
// http://youtrack.jetbrains.com/issue/KT-5257
|
||||
// JS: for with continue with label fails on runtime
|
||||
|
||||
package foo
|
||||
|
||||
var global: String = ""
|
||||
|
||||
fun up(s: String, value: Int): Int {
|
||||
global += s
|
||||
return value
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
|
||||
list@
|
||||
for (i in 0..up("A", 5)) {
|
||||
continue@list
|
||||
}
|
||||
assertEquals("A", global)
|
||||
|
||||
global = ""
|
||||
list1@
|
||||
for (i in up("A", 0)..try { global += "B"; 5} finally {}) {
|
||||
continue@list1
|
||||
}
|
||||
assertEquals("AB", global)
|
||||
|
||||
global = ""
|
||||
list2@
|
||||
for (i in try { up("A", 0) } finally {}..try { global += "B"; 5} finally {}) {
|
||||
continue@list2
|
||||
}
|
||||
assertEquals("AB", global)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
var n = 0
|
||||
forLabel0@ for(i in 0..10) {
|
||||
var j = 0
|
||||
whileLabel0@ while(j++<i) {
|
||||
n++;
|
||||
if (j==2)
|
||||
continue@forLabel0
|
||||
}
|
||||
}
|
||||
assertEquals(19, n)
|
||||
|
||||
n = 0
|
||||
forLabel1@ for(i in 0..10) {
|
||||
var j = 0
|
||||
whileLabel1@ while(try {j++} finally {} <i) {
|
||||
n++;
|
||||
if (j==2)
|
||||
continue@forLabel1
|
||||
}
|
||||
}
|
||||
assertEquals(19, n)
|
||||
|
||||
n = 0
|
||||
forLabel2@ for(i in 0..10) {
|
||||
var j = 0
|
||||
whileLabel2@ while(j++<i) {
|
||||
n++;
|
||||
if (j==2)
|
||||
break@forLabel2
|
||||
}
|
||||
}
|
||||
assertEquals(3, n)
|
||||
|
||||
n = 0
|
||||
forLabel3@ for(i in 0..10) {
|
||||
var j = 0
|
||||
whileLabel3@ while(j++<i) {
|
||||
n++;
|
||||
if (j==2)
|
||||
break@whileLabel3
|
||||
}
|
||||
}
|
||||
assertEquals(19, n)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user