Tests for basic control flow structures

This commit is contained in:
Andrey Breslav
2011-04-04 21:11:15 +04:00
parent 1fc134072c
commit fee824bd78
20 changed files with 570 additions and 431 deletions
@@ -0,0 +1,38 @@
== assignments ==
fun assignments() : Unit {
var x = 1
x = 2
x = if (true) 1 else 2
val y = true && false
val z = false && true
}
---------------------
l0:
<START>
r(1)
x <-
r(2)
x <-
r(true)
jf(l2)
r(1)
jmp(l3)
l2:
r(2)
l3:
x <-
r(true)
jf(l4)
r(false)
l4:
y <-
r(false)
jf(l5)
r(true)
l5:
z <-
l1:
<END>
=====================
+9
View File
@@ -0,0 +1,9 @@
fun assignments() : Unit {
var x = 1
x = 2
x = if (true) 1 else 2
val y = true && false
val z = false && true
}
+91
View File
@@ -1,6 +1,97 @@
== anonymous_0 ==
{1}
---------------------
l2:
<START>
r(1)
l3:
<END>
=====================
== f ==
fun f(a : Boolean) : Unit {
1
a
2.lng
foo(a, 3)
genfun<Any>()
flfun {1}
3.equals(4)
3 equals 4
1 + 2
a && true
a || false
}
---------------------
l0:
<START>
r(1)
r(a)
r(2)
r(lng)
r(2.lng)
r(a)
r(3)
r(foo)
r(foo(a, 3))
r(genfun)
r(genfun<Any>())
rf({1})
r(flfun)
r(flfun {1})
r(3)
r(4)
r(equals)
r(equals(4))
r(3.equals(4))
r(3)
r(4)
r(equals)
r(3 equals 4)
r(1)
r(2)
r(+)
r(1 + 2)
r(a)
jf(l4)
r(true)
l4:
r(a)
jt(l5)
r(false)
l1:
l5:
<END>
l2:
<START>
r(1)
l3:
<END>
=====================
== foo ==
fun foo(a : Boolean, b : Int) : Unit {}
---------------------
l0:
<START>
l1:
<END>
=====================
== genfun ==
fun genfun<T>() : Unit {}
---------------------
l0:
<START>
l1:
<END>
=====================
== flfun ==
fun flfun(f : {() : Any}) : Unit {}
---------------------
l0:
<START>
l1:
<END>
=====================
+22 -2
View File
@@ -1,3 +1,23 @@
fun f(a : Boolean) {
fun f(a : Boolean) : Unit {
1
a
}
2.lng
foo(a, 3)
genfun<Any>()
flfun {1}
3.equals(4)
3 equals 4
1 + 2
a && true
a || false
}
fun foo(a : Boolean, b : Int) : Unit {}
fun genfun<T>() : Unit {}
fun flfun(f : {() : Any}) : Unit {}
@@ -0,0 +1,68 @@
== lazyBooleans ==
fun lazyBooleans(a : Boolean, b : Boolean) : Unit {
if (a) {
1
}
else {
2
}
3
if (a && b) 5 else 6
7
if (a || b) 8 else 9
10
if (a) 11
12
if (a) else 13
14
}
---------------------
l0:
<START>
r(a)
jf(l2)
r(1)
jmp(l3)
l2:
r(2)
l3:
r(3)
r(a)
jf(l4)
r(b)
l4:
jf(l5)
r(5)
jmp(l6)
l5:
r(6)
l6:
r(7)
r(a)
jt(l7)
r(b)
l7:
jf(l8)
r(8)
jmp(l9)
l8:
r(9)
l9:
r(10)
r(a)
jf(l10)
r(11)
jmp(l11)
l10:
l11:
r(12)
r(a)
jf(l12)
jmp(l13)
l12:
r(13)
l13:
r(14)
l1:
<END>
=====================
+17
View File
@@ -0,0 +1,17 @@
fun lazyBooleans(a : Boolean, b : Boolean) : Unit {
if (a) {
1
}
else {
2
}
3
if (a && b) 5 else 6
7
if (a || b) 8 else 9
10
if (a) 11
12
if (a) else 13
14
}
+88
View File
@@ -0,0 +1,88 @@
== foo ==
fun foo() {
if (b)
return@a 1
}
---------------------
l6:
<START>
r(b)
jf(l8)
r(1)
ret(*)
jmp(l9)
l7:
l8:
l9:
<END>
=====================
== anonymous_0 ==
{a =>
2
fun foo() {
if (b)
return@a 1
}
return@a 5;
}
---------------------
l4:
<START>
r(2)
r(5)
ret(*)
l5:
<END>
=====================
== nonlocals1 ==
fun nonlocals1(a : Boolean, b : Boolean) : Unit {
if (a)
return 1
1
@a{a =>
2
fun foo() {
if (b)
return@a 1
}
return@a 5;
}
1.lng
}
---------------------
l0:
<START>
r(a)
jf(l2)
r(1)
ret(*)
jmp(l3)
l2:
l3:
r(1)
rf({a =>
2
fun foo() {
if (b)
return@a 1
}
return@a 5;
})
r(1)
r(lng)
r(1.lng)
l1:
<END>
l4:
<START>
r(2)
r(5)
ret(*)
l5:
<END>
=====================
+17
View File
@@ -0,0 +1,17 @@
fun nonlocals1(a : Boolean, b : Boolean) : Unit {
if (a)
return 1
1
@a{a =>
2
fun foo() {
if (b)
return@a 1
}
return@a 5;
}
1.lng
}