diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/if2.ek | 1 | ||||
| -rw-r--r-- | tests/refderef.ek | 11 | ||||
| -rw-r--r-- | tests/structs.ek | 32 | ||||
| -rw-r--r-- | tests/ufcs.ek | 11 |
4 files changed, 34 insertions, 21 deletions
diff --git a/tests/if2.ek b/tests/if2.ek index 7589571..c990ca5 100644 --- a/tests/if2.ek +++ b/tests/if2.ek @@ -1,5 +1,6 @@ typedef i9 {} typedef i27 {} +typedef bool {} putchar(i9 c) { diff --git a/tests/refderef.ek b/tests/refderef.ek new file mode 100644 index 0000000..1420d2c --- /dev/null +++ b/tests/refderef.ek @@ -0,0 +1,11 @@ +typedef i9 {} +typedef i27 {} + +main() +{ + *i9 p = 0 as *i9; + *i9 a = p*&; + a = p*&*&; + a = p&*; + i9 b = p&**&*; +} diff --git a/tests/structs.ek b/tests/structs.ek index 1444d24..22cce71 100644 --- a/tests/structs.ek +++ b/tests/structs.ek @@ -1,28 +1,18 @@ -typedef any {} +typedef i27 {} +typedef i9 {} -struct basic_struct { - i64 a; - i64 b; - i64 c; -} +typedef int_pair { + i27 a; + i27 b; -struct complex_struct (any A, any B, any C) { - A a; - B b; - C c; + sum(*int_pair self => i27) + { + return self*.a + self*.b; + } } 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}; + mut p = int_pair!{.a = 9, .b = 10}; + i27 s = p.sum(); } diff --git a/tests/ufcs.ek b/tests/ufcs.ek new file mode 100644 index 0000000..85d241b --- /dev/null +++ b/tests/ufcs.ek @@ -0,0 +1,11 @@ +typedef i27 { + add(*i27 self, i27 other => i27) + { + return self* + other; + } +} + +main() +{ + i27 a = 12.add(24); +} |
