aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/test.cff
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/test.cff')
-rw-r--r--bootstrap/test.cff25
1 files changed, 19 insertions, 6 deletions
diff --git a/bootstrap/test.cff b/bootstrap/test.cff
index 011d386..6c0f605 100644
--- a/bootstrap/test.cff
+++ b/bootstrap/test.cff
@@ -20,6 +20,18 @@ enum Color {
static xs *void = {},
ok = 6;
+defmacro each(i, x, arr, &body) [
+ for let i = 0; i < sizeof(arr)/sizeof(arr[0]); ++i {
+ let x = arr[i];
+ body
+ }
+]
+defmacro times(n,&body) [
+ for let $i = 0; $i < (n); ++$i {
+ body
+ }
+]
+
fn isort(xs *int, n usize) void {
fn icmp(lhs *const void, rhs *const void, _ *void) int {
let lhs = *as(*int)lhs,
@@ -40,13 +52,14 @@ extern fn main (argc int, argv **u8) int {
let p = &x;
printf("v = { %g, %g }\n", x.x, p.y);
- let is [10]int = { [4] = 1, 2, [1 - 1] = 3 };
- isort(is, 10);
- for let i = 0; i < 10; ++i {
- printf("%d\n", is[i]);
- }
+ let xs [10]int = { [4] = 1, 2, [1 - 1] = 3 };
+ isort(xs, 10);
+
+ each(i, x, xs) {
+ printf("%d\n", xs[i]);
+ }
- printf("sizeof(is) = %zu\n", sizeof(is));
+ printf("sizeof(is) = %zu\n", sizeof(xs));
printf("sizeof *void = %zu\n", sizeof *void);