aboutsummaryrefslogtreecommitdiff
path: root/tests/resolve.ek
diff options
context:
space:
mode:
Diffstat (limited to 'tests/resolve.ek')
-rw-r--r--tests/resolve.ek35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/resolve.ek b/tests/resolve.ek
new file mode 100644
index 0000000..1be0916
--- /dev/null
+++ b/tests/resolve.ek
@@ -0,0 +1,35 @@
+typedef A {}
+
+struct generic (T1 A, T2 A) {
+ a T1;
+ b T2;
+}
+
+struct other_generic(T1 A) {
+ a T1;
+ b T1;
+}
+
+/* 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
+ a generic(i64, generic);
+ some_func(a);
+}