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) {
|
task sum1(type: UnitKonanTest) {
|
||||||
source = "codegen/function/sum_foo_bar.kt"
|
source = "codegen/function/sum_foo_bar.kt"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
task sum2(type: UnitKonanTest) {
|
task sum2(type: UnitKonanTest) {
|
||||||
@@ -210,3 +211,10 @@ task minus_eq(type: UnitKonanTest) {
|
|||||||
source = "codegen/function/minus_eq.kt"
|
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