Tests for "while" and "do-while" loop generation
This commit is contained in:
committed by
vvlevchenko
parent
bfb6e448c5
commit
152e738e23
@@ -142,6 +142,7 @@ task aritmetic(type: UnitKonanTest) {
|
||||
|
||||
task sum1(type: UnitKonanTest) {
|
||||
source = "codegen/function/sum_foo_bar.kt"
|
||||
|
||||
}
|
||||
|
||||
task sum2(type: UnitKonanTest) {
|
||||
@@ -210,3 +211,10 @@ task minus_eq(type: UnitKonanTest) {
|
||||
source = "codegen/function/minus_eq.kt"
|
||||
}
|
||||
|
||||
task cycle(type: UnitKonanTest) {
|
||||
source = "codegen/cycles/cycle.kt"
|
||||
}
|
||||
|
||||
task cycle_do(type: UnitKonanTest) {
|
||||
source = "codegen/cycles/cycle_do.kt"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
extern void *resolve_symbol(const char*);
|
||||
|
||||
int
|
||||
run_test() {
|
||||
int (*cycle)(int) = resolve_symbol("kfun:cycle");
|
||||
|
||||
if (cycle(1) != 2) return 1;
|
||||
if (cycle(0) != 1) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fun cycle(cnt: Int): Int {
|
||||
var sum = 1
|
||||
while (sum == cnt) {
|
||||
sum = sum + 1
|
||||
}
|
||||
return sum
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
extern void *resolve_symbol(const char*);
|
||||
|
||||
int
|
||||
run_test() {
|
||||
int (*cycle_do)(int) = resolve_symbol("kfun:cycle_do");
|
||||
|
||||
if (cycle_do(3) != 5) return 1;
|
||||
if (cycle_do(0) != 3) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fun cycle_do(cnt: Int): Int {
|
||||
var sum = 1
|
||||
do {
|
||||
sum = sum + 2
|
||||
} while (sum == cnt)
|
||||
return sum
|
||||
}
|
||||
Reference in New Issue
Block a user