(cherry picked from commit dd65986795)
This commit is contained in:
jcosborn
2018-10-09 06:34:03 -05:00
committed by narimiran
parent 4e9686d1a9
commit 82896abcbe
2 changed files with 22 additions and 1 deletions

View File

@@ -1292,7 +1292,7 @@ proc typeRelImpl(c: var TCandidate, f, aOrig: PType,
of tyDistinct:
if a.kind == tyDistinct:
if sameDistinctTypes(f, a): result = isEqual
elif f.base.kind == tyAnything: result = isGeneric
#elif f.base.kind == tyAnything: result = isGeneric # issue 4435
elif c.coerceDistincts: result = typeRel(c, f.base, a)
elif a.kind == tyNil and f.base.kind in NilableTypes:
result = f.allowsNil

21
tests/distinct/t4435.nim Normal file
View File

@@ -0,0 +1,21 @@
discard """
output: '''
A
A
'''
"""
type
A[T] = distinct T
B[T] = distinct T
proc foo[T](x:A[T]) = echo "A"
proc foo[T](x:B[T]) = echo "B"
proc bar(x:A) = echo "A"
proc bar(x:B) = echo "B"
var
a:A[int]
foo(a) # fine
bar(a) # testdistinct.nim(14, 4) Error: ambiguous call; both testdistinct.bar(x: A) and testdistinct.bar(x: B) match for: (A[system.int])