summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/sigmatch.nim7
-rw-r--r--tests/array/tarray.nim8
2 files changed, 14 insertions, 1 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim
index 090f30f16..aba36d24d 100644
--- a/compiler/sigmatch.nim
+++ b/compiler/sigmatch.nim
@@ -1145,7 +1145,12 @@ proc typeRelImpl(c: var TCandidate, f, aOrig: PType,
           fRange = prev
       let ff = f.sons[1].skipTypes({tyTypeDesc})
       let aa = a.sons[1].skipTypes({tyTypeDesc})
-      result = typeRel(c, ff, aa)
+      
+      if f.sons[0].kind != tyGenericParam and aa.kind == tyEmpty:
+        result = isGeneric  
+      else:
+        result = typeRel(c, ff, aa)
+     
       if result < isGeneric:
         if nimEnableCovariance and
            trNoCovariance notin flags and
diff --git a/tests/array/tarray.nim b/tests/array/tarray.nim
index 9cfb758e2..95d1bb7cc 100644
--- a/tests/array/tarray.nim
+++ b/tests/array/tarray.nim
@@ -38,3 +38,11 @@ var found: array[0..filesToCreate.high, bool]
 
 echo found.len
 
+# make sure empty arrays are assignable (bug #6853)
+const arr1: array[0, int] = []
+const arr2 = []
+let arr3: array[0, string] = []
+
+doAssert(arr1.len == 0)
+doAssert(arr2.len == 0)
+doAssert(arr3.len == 0)