aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2024-04-09 18:23:33 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2024-04-09 18:23:33 +0300
commiteda6bcd42128a3e555c99a68f5b31c7e85518fe5 (patch)
treea83376bdf90b0e2f30297e5af24210af99f2b36b /tests
parent451111dc51df69580d04c9965f70531f50e3d509 (diff)
downloadek-eda6bcd42128a3e555c99a68f5b31c7e85518fe5.tar.gz
ek-eda6bcd42128a3e555c99a68f5b31c7e85518fe5.zip
improve struct handling
Diffstat (limited to 'tests')
-rw-r--r--tests/if2.ek1
-rw-r--r--tests/refderef.ek11
-rw-r--r--tests/structs.ek32
-rw-r--r--tests/ufcs.ek11
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);
+}