summary refs log tree commit diff stats
path: root/compiler/sigmatch.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/sigmatch.nim')
-rw-r--r--compiler/sigmatch.nim8
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim
index bc9888df9..ae7be3c6d 100644
--- a/compiler/sigmatch.nim
+++ b/compiler/sigmatch.nim
@@ -1086,8 +1086,12 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, doBind = true): TTypeRelation =
   of tyBuiltInTypeClass:
     considerPreviousT:
       let targetKind = f.sons[0].kind
-      if targetKind == a.skipTypes({tyRange, tyGenericInst, tyBuiltInTypeClass, tyAlias}).kind or
-         (targetKind in {tyProc, tyPointer} and a.kind == tyNil):
+      let effectiveArgType = a.skipTypes({tyRange, tyGenericInst,
+                                          tyBuiltInTypeClass, tyAlias})
+      let typeClassMatches = targetKind == effectiveArgType.kind and
+                             not effectiveArgType.isEmptyContainer
+      if typeClassMatches or
+        (targetKind in {tyProc, tyPointer} and effectiveArgType.kind == tyNil):
         put(c, f, a)
         return isGeneric
       else: