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

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

* try fix
This commit is contained in:
Bung
2022-10-11 17:42:49 +08:00
committed by GitHub
parent 5602183234
commit 083ea8f10c
2 changed files with 11 additions and 2 deletions

View File

@@ -1595,10 +1595,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