diff options
-rw-r--r-- | compiler/sigmatch.nim | 2 | ||||
-rw-r--r-- | tests/distinct/t4435.nim | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index e0fa74db5..cc1aaa074 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -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 diff --git a/tests/distinct/t4435.nim b/tests/distinct/t4435.nim new file mode 100644 index 000000000..4d9979fab --- /dev/null +++ b/tests/distinct/t4435.nim @@ -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]) |