aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/zc0typed.zc
blob: 48488d583814f37dd7e15f73b2a23276d22b8779 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace;

// the stage 0 compiler (src/tools/zc0.c) has no types. it reads them and throws
// them away, so a typed program and the same program without the types come
// out as the same image. tests/programs/zc0plain.zc is this file with the types off.
int total;
int[8] table;
word[?] names;
const int LIMIT = 10;

int add(int a, int b) { return a + b; }
.u grow(word[?] v, int n) { return v; }
bool keep(int.d x, .m y) { return x != y; }
int apply(int(int) f, int* p, vec<vec<int>>* q) { return f(*p); }
int sq(int x) { return x * x; }

fn start() {
	int i = 0, sum = 0;
	int[4] a;
	int* p = a;
	for (int j = 0; j < LIMIT; j++) sum = add(sum, sq(j));
	while (i < 4) { a[i] = i; i++; }
	total = sum + a[3] + table[2];
	return total;
}