1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-20 02:32:36 +00:00

add deep nesting test program

This commit is contained in:
Travis Fisher 2019-04-08 18:05:25 -04:00
parent 68a737cf0f
commit 0bc03ffdb0
2 changed files with 113 additions and 0 deletions

View File

@ -788,6 +788,11 @@ public class TestPrograms {
compileAndCompare("const-param");
}
@Test
public void testDeepNesting() throws IOException, URISyntaxException {
compileAndCompare("deep-nesting");
}
@Test
public void testHelloWorld() throws IOException, URISyntaxException {
compileAndCompare("examples/helloworld/helloworld");

108
src/test/kc/deep-nesting.kc Normal file
View File

@ -0,0 +1,108 @@
// Test that the compiler handles deep nesting well -- mainly a performance issue.
void main() {
byte* screen = $400;
const byte reverse = $80;
screen[0] = f1(0);
}
byte f1(byte x) { return f2(x) + 1; }
byte f2(byte x) { return f3(x) + 1; }
byte f3(byte x) { return f4(x) + 1; }
byte f4(byte x) { return f5(x) + 1; }
byte f5(byte x) { return f6(x) + 1; }
byte f6(byte x) { return f7(x) + 1; }
byte f7(byte x) { return f8(x) + 1; }
byte f8(byte x) { return f9(x) + 1; }
byte f9(byte x) { return f10(x) + 1; }
byte f10(byte x) { return f11(x) + 1; }
byte f11(byte x) { return f12(x) + 1; }
byte f12(byte x) { return f13(x) + 1; }
byte f13(byte x) { return f14(x) + 1; }
byte f14(byte x) { return f15(x) + 1; }
byte f15(byte x) { return f16(x) + 1; }
byte f16(byte x) { return f17(x) + 1; }
byte f17(byte x) { return f18(x) + 1; }
byte f18(byte x) { return f19(x) + 1; }
byte f19(byte x) { return f20(x) + 1; }
byte f20(byte x) { return f21(x) + 1; }
byte f21(byte x) { return f22(x) + 1; }
byte f22(byte x) { return f23(x) + 1; }
byte f23(byte x) { return f24(x) + 1; }
byte f24(byte x) { return f25(x) + 1; }
byte f25(byte x) { return f26(x) + 1; }
byte f26(byte x) { return f27(x) + 1; }
byte f27(byte x) { return f28(x) + 1; }
byte f28(byte x) { return f29(x) + 1; }
byte f29(byte x) { return f30(x) + 1; }
byte f30(byte x) { return f31(x) + 1; }
byte f31(byte x) { return f32(x) + 1; }
byte f32(byte x) { return f33(x) + 1; }
byte f33(byte x) { return f34(x) + 1; }
byte f34(byte x) { return f35(x) + 1; }
byte f35(byte x) { return f36(x) + 1; }
byte f36(byte x) { return f37(x) + 1; }
byte f37(byte x) { return f38(x) + 1; }
byte f38(byte x) { return f39(x) + 1; }
byte f39(byte x) { return f40(x) + 1; }
byte f40(byte x) { return f41(x) + 1; }
byte f41(byte x) { return f42(x) + 1; }
byte f42(byte x) { return f43(x) + 1; }
byte f43(byte x) { return f44(x) + 1; }
byte f44(byte x) { return f45(x) + 1; }
byte f45(byte x) { return f46(x) + 1; }
byte f46(byte x) { return f47(x) + 1; }
byte f47(byte x) { return f48(x) + 1; }
byte f48(byte x) { return f49(x) + 1; }
byte f49(byte x) { return f50(x) + 1; }
byte f50(byte x) { return f51(x) + 1; }
byte f51(byte x) { return f52(x) + 1; }
byte f52(byte x) { return f53(x) + 1; }
byte f53(byte x) { return f54(x) + 1; }
byte f54(byte x) { return f55(x) + 1; }
byte f55(byte x) { return f56(x) + 1; }
byte f56(byte x) { return f57(x) + 1; }
byte f57(byte x) { return f58(x) + 1; }
byte f58(byte x) { return f59(x) + 1; }
byte f59(byte x) { return f60(x) + 1; }
byte f60(byte x) { return f61(x) + 1; }
byte f61(byte x) { return f62(x) + 1; }
byte f62(byte x) { return f63(x) + 1; }
byte f63(byte x) { return f64(x) + 1; }
byte f64(byte x) { return f65(x) + 1; }
byte f65(byte x) { return f66(x) + 1; }
byte f66(byte x) { return f67(x) + 1; }
byte f67(byte x) { return f68(x) + 1; }
byte f68(byte x) { return f69(x) + 1; }
byte f69(byte x) { return f70(x) + 1; }
byte f70(byte x) { return f71(x) + 1; }
byte f71(byte x) { return f72(x) + 1; }
byte f72(byte x) { return f73(x) + 1; }
byte f73(byte x) { return f74(x) + 1; }
byte f74(byte x) { return f75(x) + 1; }
byte f75(byte x) { return f76(x) + 1; }
byte f76(byte x) { return f77(x) + 1; }
byte f77(byte x) { return f78(x) + 1; }
byte f78(byte x) { return f79(x) + 1; }
byte f79(byte x) { return f80(x) + 1; }
byte f80(byte x) { return f81(x) + 1; }
byte f81(byte x) { return f82(x) + 1; }
byte f82(byte x) { return f83(x) + 1; }
byte f83(byte x) { return f84(x) + 1; }
byte f84(byte x) { return f85(x) + 1; }
byte f85(byte x) { return f86(x) + 1; }
byte f86(byte x) { return f87(x) + 1; }
byte f87(byte x) { return f88(x) + 1; }
byte f88(byte x) { return f89(x) + 1; }
byte f89(byte x) { return f90(x) + 1; }
byte f90(byte x) { return f91(x) + 1; }
byte f91(byte x) { return f92(x) + 1; }
byte f92(byte x) { return f93(x) + 1; }
byte f93(byte x) { return f94(x) + 1; }
byte f94(byte x) { return f95(x) + 1; }
byte f95(byte x) { return f96(x) + 1; }
byte f96(byte x) { return f97(x) + 1; }
byte f97(byte x) { return f98(x) + 1; }
byte f98(byte x) { return f99(x) + 1; }
byte f99(byte x) { return f100(x) + 1; }
byte f100(byte x) { return x;}