* fix #7446 Generics: type mismatch 'SomeunsignedInt or Natural' * try fix
This commit is contained in:
parent
5602183234
commit
083ea8f10c
2 changed files with 11 additions and 2 deletions
|
|
@ -1595,10 +1595,9 @@ proc typeRel(c: var TCandidate, f, aOrig: PType,
|
||||||
c.inheritancePenalty = 0
|
c.inheritancePenalty = 0
|
||||||
let x = typeRel(c, branch, aOrig, flags)
|
let x = typeRel(c, branch, aOrig, flags)
|
||||||
maxInheritance = max(maxInheritance, c.inheritancePenalty)
|
maxInheritance = max(maxInheritance, c.inheritancePenalty)
|
||||||
|
|
||||||
# 'or' implies maximum matching result:
|
# 'or' implies maximum matching result:
|
||||||
if x > result: result = x
|
if x > result: result = x
|
||||||
if result >= isSubtype:
|
if result >= isIntConv:
|
||||||
if result > isGeneric: result = isGeneric
|
if result > isGeneric: result = isGeneric
|
||||||
bindingRet result
|
bindingRet result
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
10
tests/generics/t7446.nim
Normal file
10
tests/generics/t7446.nim
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue