fix #7446 Generics: type mismatch 'SomeunsignedInt or Natural' (#20522)

* fix #7446 Generics: type mismatch 'SomeunsignedInt or Natural'

* try fix

(cherry picked from commit 083ea8f10c)
This commit is contained in:
Bung
2022-10-11 17:42:49 +08:00
committed by narimiran
parent 01d27ef1db
commit f2b52ec432
2 changed files with 11 additions and 2 deletions

View File

@@ -1584,10 +1584,9 @@ proc typeRel(c: var TCandidate, f, aOrig: PType,
c.inheritancePenalty = 0
let x = typeRel(c, branch, aOrig, flags)
maxInheritance = max(maxInheritance, c.inheritancePenalty)
# 'or' implies maximum matching result:
if x > result: result = x
if result >= isSubtype:
if result >= isIntConv:
if result > isGeneric: result = isGeneric
bindingRet result
else:

10
tests/generics/t7446.nim Normal file
View File

@@ -0,0 +1,10 @@
proc foo(x: Natural or SomeUnsignedInt):int =
when x is int:
result = 1
else:
result = 2
let a = 10
doAssert foo(a) == 1
let b = 10'u8
doAssert foo(b) == 2