This commit is contained in:
zah
2017-03-17 18:11:37 +02:00
committed by Andreas Rumpf
parent d701de5733
commit a20a8e6adb
2 changed files with 22 additions and 2 deletions

View File

@@ -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:

16
tests/errmsgs/t4756.nim Normal file
View File

@@ -0,0 +1,16 @@
discard """
errormsg: "type mismatch: got (string, arr: seq[empty])"
line: 15
"""
# https://github.com/nim-lang/Nim/issues/4756
type
Test* = ref object
name*: string
proc newTest(name: string, arr: seq): Test =
result = Test(name: name)
let test = newTest("test", arr = @[])