summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/sighashes.nim3
-rw-r--r--tests/ccgbugs/tuple_canon.nim15
2 files changed, 18 insertions, 0 deletions
diff --git a/compiler/sighashes.nim b/compiler/sighashes.nim
index e2032294a..5d6b5978d 100644
--- a/compiler/sighashes.nim
+++ b/compiler/sighashes.nim
@@ -247,6 +247,9 @@ proc hashType(c: var MD5Context, t: PType; flags: set[ConsiderFlag]) =
       if tfNoSideEffect in t.flags: c &= ".noSideEffect"
       if tfThread in t.flags: c &= ".thread"
     if tfVarargs in t.flags: c &= ".varargs"
+  of tyArray:
+    c &= char(t.kind)
+    for i in 0..<t.len: c.hashType(t.sons[i], flags-{CoIgnoreRange})
   else:
     c &= char(t.kind)
     for i in 0..<t.len: c.hashType(t.sons[i], flags)
diff --git a/tests/ccgbugs/tuple_canon.nim b/tests/ccgbugs/tuple_canon.nim
index 1a4a4d611..7e9e91836 100644
--- a/tests/ccgbugs/tuple_canon.nim
+++ b/tests/ccgbugs/tuple_canon.nim
@@ -98,3 +98,18 @@ proc print(pos: Position) =
 var x = 0.n16
 var y = 0.n16
 print((x, y))
+
+
+# bug #6889
+proc createProgressSetterWithPropSetter[T](setter: proc(v: T)) = discard
+
+type A = distinct array[4, float32]
+type B = distinct array[3, float32]
+
+type Foo[T] = tuple
+    setter: proc(v: T)
+
+proc getFoo[T](): Foo[T] = discard
+
+createProgressSetterWithPropSetter(getFoo[A]().setter)
+createProgressSetterWithPropSetter(getFoo[B]().setter)