summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/sigmatch.nim7
-rw-r--r--tests/generics/t4884.nim11
2 files changed, 15 insertions, 3 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim
index 7f7572968..46d5704e3 100644
--- a/compiler/sigmatch.nim
+++ b/compiler/sigmatch.nim
@@ -1358,9 +1358,10 @@ proc paramTypesMatchAux(m: var TCandidate, f, argType: PType,
       return argSemantized
 
     if argType.kind == tyStatic:
-      if m.callee.kind == tyGenericBody and tfGenericTypeParam notin argType.flags:
-        result = newNodeIT(nkType, argOrig.info, makeTypeFromExpr(c, arg))
-        return
+      if m.callee.kind == tyGenericBody and
+         argType.len == 0 and
+         tfGenericTypeParam notin argType.flags:
+        return newNodeIT(nkType, argOrig.info, makeTypeFromExpr(c, arg))
     else:
       var evaluated = c.semTryConstExpr(c, arg)
       if evaluated != nil:
diff --git a/tests/generics/t4884.nim b/tests/generics/t4884.nim
new file mode 100644
index 000000000..9a560f649
--- /dev/null
+++ b/tests/generics/t4884.nim
@@ -0,0 +1,11 @@
+type
+  Vec*[N: static[int], T] = object
+    arr*: array[N, T]
+
+  Mat*[N,M: static[int], T] = object
+    arr*: array[N, Vec[M,T]]
+
+var m : Mat[3,3,float]
+var strMat : Mat[m.N, m.M, string]
+var lenMat : Mat[m.N, m.M, int]
+