aboutsummaryrefslogtreecommitdiff
path: root/tests/structs.ek
blob: 1444d241fcc5bb7a5728cc7374d79e154fb768cc (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
26
27
28
typedef any {}

struct basic_struct {
	i64 a;
	i64 b;
	i64 c;
}

struct complex_struct (any A, any B, any C) {
	A a;
	B b;
	C c;
}

main()
{
	/* infer types */
	const simple_named = {.a = 1, .b = 2, .c = 3} as basic_struct;
	const complex_named = {.a = 1, .b = 2, .c = 3} as complex_struct;

	/* force types */
	complex_struct![u32, u32, u32] force_named = {.a = 1, .b = 2, .c = 3};
	mut force_inferred_named = {.a = 1, .b = 2, .c = 3} as
		complex_struct![u32, u32, u32];

	/* types should be inferred */
	force_inferred_named = {.a = 2, .b = 3, .c = 4};
}