aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/arr.ek5
-rw-r--r--tests/blocks.ek10
-rw-r--r--tests/callbacks.ek13
-rw-r--r--tests/d.ek35
-rw-r--r--tests/enums.ek11
-rw-r--r--tests/if.ek1
-rw-r--r--tests/if2.ek1
-rw-r--r--tests/loop.ek1
-rw-r--r--tests/pointer_literal.ek1
-rw-r--r--tests/refderef.ek1
-rw-r--r--tests/resolve.ek35
-rw-r--r--tests/rvalue.ek2
-rw-r--r--tests/struct_call_ref.ek1
-rw-r--r--tests/structs.ek1
-rw-r--r--tests/trait_expand.ek2
-rw-r--r--tests/trait_multiple_expand.ek8
-rw-r--r--tests/type_expand.ek11
-rw-r--r--tests/ufcs.ek1
-rw-r--r--tests/unions.ek21
-rw-r--r--tests/variadic.ek11
20 files changed, 46 insertions, 126 deletions
diff --git a/tests/arr.ek b/tests/arr.ek
deleted file mode 100644
index c206615..0000000
--- a/tests/arr.ek
+++ /dev/null
@@ -1,5 +0,0 @@
-main()
-{
- [20][20]*type![u32, u32] a = [20, => 20 ... 200 = 240, [200, 200]];
- a[20] = 200;
-}
diff --git a/tests/blocks.ek b/tests/blocks.ek
deleted file mode 100644
index 3e598f5..0000000
--- a/tests/blocks.ek
+++ /dev/null
@@ -1,10 +0,0 @@
-main()
-{
- mut a = switch 1 {
- case 2: 2;
- case 1: 1;
- default: 20; 20;
- };
-
- mut c = {2 + 2; 4 + 4};
-}
diff --git a/tests/callbacks.ek b/tests/callbacks.ek
index 6e753e0..927c122 100644
--- a/tests/callbacks.ek
+++ b/tests/callbacks.ek
@@ -1,17 +1,16 @@
-do_stuff(^(u32) proc)
-{
- proc();
-}
+typedef i27 {}
-other_proc(u32)
+do_stuff(^(i27 => i27) proc => i27)
{
+ return proc(20);
}
-other_proc()
+other_proc(i27 a => i27)
{
+ return a + 10;
}
main()
{
- do_stuff(other_proc as ^(u32));
+ do_stuff(other_proc);
}
diff --git a/tests/d.ek b/tests/d.ek
deleted file mode 100644
index 1ee313d..0000000
--- a/tests/d.ek
+++ /dev/null
@@ -1,35 +0,0 @@
-struct vec[any T]
-{
- u27 size;
- u27 cap;
- *T buf;
-}
-
-append(*vec v, T::typeof(v) e)
-{
- if v.size == v.cap {
- v.cap *= 3;
- v.buf = realloc(v.buf, v.cap);
- }
- u27 a = {
- 2
- };
-
- {
- here();
- }
-
- u27 a = {
- .what = 200,
- .wow = 200
- };
-
- u27 a = switch (b) {
- default: 20;
- };
-
- label: while a {
- }
-
- v.buf[v.size] = e;
-}
diff --git a/tests/enums.ek b/tests/enums.ek
index 234bbd1..ef7850c 100644
--- a/tests/enums.ek
+++ b/tests/enums.ek
@@ -1,9 +1,17 @@
+typedef i27 {
+ add(i27 a, i27 b => i27) {
+ return a + b;
+ }
+};
+
+typedef i9 {};
+
enum A {
a = 200,
b
}
-enum B: u8 {
+enum B: i9 {
b, c
}
@@ -11,4 +19,5 @@ main()
{
const a = a::A;
const b = b::B;
+ const c = a.add(b as i27);
}
diff --git a/tests/if.ek b/tests/if.ek
index cd4341d..e3e08d7 100644
--- a/tests/if.ek
+++ b/tests/if.ek
@@ -1,5 +1,6 @@
typedef i9 {}
typedef i27 {}
+typedef ptr {}
putchar(i9 c)
{
diff --git a/tests/if2.ek b/tests/if2.ek
index c990ca5..0932155 100644
--- a/tests/if2.ek
+++ b/tests/if2.ek
@@ -1,6 +1,7 @@
typedef i9 {}
typedef i27 {}
typedef bool {}
+typedef ptr {}
putchar(i9 c)
{
diff --git a/tests/loop.ek b/tests/loop.ek
index 265d09f..6ecf439 100644
--- a/tests/loop.ek
+++ b/tests/loop.ek
@@ -1,6 +1,7 @@
typedef i9 {}
typedef i27 {}
typedef bool {}
+typedef ptr {}
putchar(i9 c)
{
diff --git a/tests/pointer_literal.ek b/tests/pointer_literal.ek
index dbb2bef..ade7988 100644
--- a/tests/pointer_literal.ek
+++ b/tests/pointer_literal.ek
@@ -1,5 +1,6 @@
typedef i9 {}
typedef i27 {}
+typedef ptr {}
main()
{
diff --git a/tests/refderef.ek b/tests/refderef.ek
index 1420d2c..ff020e7 100644
--- a/tests/refderef.ek
+++ b/tests/refderef.ek
@@ -1,5 +1,6 @@
typedef i9 {}
typedef i27 {}
+typedef ptr {}
main()
{
diff --git a/tests/resolve.ek b/tests/resolve.ek
deleted file mode 100644
index f417fde..0000000
--- a/tests/resolve.ek
+++ /dev/null
@@ -1,35 +0,0 @@
-typedef A {}
-
-struct generic (T1 A, T2 A) {
- T1 a;
- T2 b;
-}
-
-struct other_generic(T1 A) {
- T1 a;
- T2 b;
-}
-
-/* wow this works pretty good */
-//some_func(a A, b typeof a, c i64){1;}
-//some_func(a A, b typeof a, c typeof b){2;}
-//some_func(a A, b typeof a, c A){3;}
-//some_func(a generic(u32, u32)) {5;}
-//some_func(a other_generic){6;}
-// TODO: partial templates shouldn't be allowed
-//some_func(a generic(u32)){6;}
-//some_func(a generic) {4;}
-// illegal
-// TODO: traits shouldn't be allowed in template instantiation
-//some_func(a generic(A, A)){6;}
-//some_func(generic(generic, generic)){1;}
-//some_func(generic(generic, i64)){2;}
-//some_func(generic(i64, generic)){3;}
-//some_func(generic(i64, i64)){4;}
-some_func(generic){5;}
-
-main(){
- // TODO: not fully qualified types in bodies should cause an error
- [20]generic![i64, generic] a;
- some_func(a);
-}
diff --git a/tests/rvalue.ek b/tests/rvalue.ek
index c55f14b..4864fae 100644
--- a/tests/rvalue.ek
+++ b/tests/rvalue.ek
@@ -1,3 +1,5 @@
+typedef i27 {}
+
main()
{
/* should parse, but give an error about lvalue vs rvalue */
diff --git a/tests/struct_call_ref.ek b/tests/struct_call_ref.ek
index a4d38bc..e1ec9d9 100644
--- a/tests/struct_call_ref.ek
+++ b/tests/struct_call_ref.ek
@@ -1,3 +1,4 @@
+typedef ptr {}
typedef i27 {}
typedef i9 {}
diff --git a/tests/structs.ek b/tests/structs.ek
index 3e64b94..13399b3 100644
--- a/tests/structs.ek
+++ b/tests/structs.ek
@@ -1,3 +1,4 @@
+typedef ptr {}
typedef i27 {}
typedef i9 {}
diff --git a/tests/trait_expand.ek b/tests/trait_expand.ek
index 8ee413e..c5f0f1c 100644
--- a/tests/trait_expand.ek
+++ b/tests/trait_expand.ek
@@ -1,3 +1,5 @@
+typedef ptr {}
+
define b[] {
a![];
}
diff --git a/tests/trait_multiple_expand.ek b/tests/trait_multiple_expand.ek
index 285a6ea..04e2b82 100644
--- a/tests/trait_multiple_expand.ek
+++ b/tests/trait_multiple_expand.ek
@@ -1,3 +1,5 @@
+typedef ptr {}
+
define b[] {
c![];
a![];
@@ -16,3 +18,9 @@ typedef d {
b![];
c(*d d) {}
}
+
+main()
+{
+ d d = d!{};
+ d.c();
+}
diff --git a/tests/type_expand.ek b/tests/type_expand.ek
deleted file mode 100644
index e58d0a0..0000000
--- a/tests/type_expand.ek
+++ /dev/null
@@ -1,11 +0,0 @@
-define trait[] {
- trait_func(*trait a, *trait b);
-}
-
-typedef a[] {
- trait![];
-}
-
-main() {
- a![] some_var;
-}
diff --git a/tests/ufcs.ek b/tests/ufcs.ek
index 85d241b..efa7701 100644
--- a/tests/ufcs.ek
+++ b/tests/ufcs.ek
@@ -1,3 +1,4 @@
+typedef ptr {}
typedef i27 {
add(*i27 self, i27 other => i27)
{
diff --git a/tests/unions.ek b/tests/unions.ek
deleted file mode 100644
index b493d5a..0000000
--- a/tests/unions.ek
+++ /dev/null
@@ -1,21 +0,0 @@
-typedef any {}
-
-union basic_union {
- u32 a;
- i64 b;
- f32 c;
-}
-
-union complex_union(any A, any B, any C) {
- A a;
- B b;
- C c;
-}
-
-main()
-{
- const simple_named = {.b = 1} as basic_union;
-
- // TODO: unions should be fully actualized
- const complex_named = {.b = 1} as complex_union![u32, i64, f32];
-}
diff --git a/tests/variadic.ek b/tests/variadic.ek
index ae3c2c2..0e9120c 100644
--- a/tests/variadic.ek
+++ b/tests/variadic.ek
@@ -1,7 +1,16 @@
+typedef i27 {}
+
define macro(a, b, ... c)
{
+ mut sum = 0;
const for i : a, b, ... c {
+ sum += i;
}
+
+ sum;
}
-proc(u32 a, u32 b, ... c) {}
+main()
+{
+ macro!(1, 2, 3, 4);
+}