summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/sigmatch.nim3
-rw-r--r--tests/errmsgs/twrong_at_operator.nim15
2 files changed, 17 insertions, 1 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim
index e4509ff91..2b45a2452 100644
--- a/compiler/sigmatch.nim
+++ b/compiler/sigmatch.nim
@@ -1145,7 +1145,8 @@ proc typeRelImpl(c: var TCandidate, f, aOrig: PType,
         else:
           fRange = prev
       let ff = f.sons[1].skipTypes({tyTypeDesc})
-      let aa = a.sons[1].skipTypes({tyTypeDesc})
+      # This typeDesc rule is wrong, see bug #7331
+      let aa = a.sons[1] #.skipTypes({tyTypeDesc})
 
       if f.sons[0].kind != tyGenericParam and aa.kind == tyEmpty:
         result = isGeneric
diff --git a/tests/errmsgs/twrong_at_operator.nim b/tests/errmsgs/twrong_at_operator.nim
new file mode 100644
index 000000000..b6b3d101f
--- /dev/null
+++ b/tests/errmsgs/twrong_at_operator.nim
@@ -0,0 +1,15 @@
+discard """
+errormsg: "type mismatch: got <array[0..0, type int]>"
+line: 15
+nimout: '''
+twrong_at_operator.nim(15, 30) Error: type mismatch: got <array[0..0, type int]>
+but expected one of:
+proc `@`[T](a: openArray[T]): seq[T]
+proc `@`[IDX, T](a: array[IDX, T]): seq[T]
+
+expression: @[int]
+'''
+"""
+
+# bug #7331
+var seqOfStrings: seq[int] = @[int]