summary refs log tree commit diff stats
path: root/tests/generics/tparam_binding.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/generics/tparam_binding.nim')
-rw-r--r--tests/generics/tparam_binding.nim29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/generics/tparam_binding.nim b/tests/generics/tparam_binding.nim
new file mode 100644
index 000000000..fa7558613
--- /dev/null
+++ b/tests/generics/tparam_binding.nim
@@ -0,0 +1,29 @@
+discard """
+  matrix: "--mm:arc; --mm:refc"
+  errormsg: "got <ref Matrix[2, 2, system.float], ref Matrix[2, 1, system.float]>"
+  line: 28
+"""
+
+type
+  Matrix[M,N: static[int]; T: SomeFloat] = distinct array[0..(M*N - 1), T]
+
+let a = new Matrix[2,2,float]
+let b = new Matrix[2,1,float]
+
+proc foo[M,N: static[int],T](a: ref Matrix[M, N, T], b: ref Matrix[M, N, T])=
+  discard
+
+foo(a, a)
+
+proc bar[M,N: static[int],T](a: ref Matrix[M, M, T], b: ref Matrix[M, N, T])=
+  discard
+
+bar(a, b)
+bar(a, a)
+
+proc baz[M,N: static[int],T](a: ref Matrix[N, N, T], b: ref Matrix[M, N, T])=
+  discard
+
+baz(a, a)
+baz(a, b)
+