add testcase for overloadable_enums (#18722)

* add testcase for overloadable_enums

* link
This commit is contained in:
flywind 2021-08-21 14:21:06 +08:00 • committed by GitHub
commit f0c6593412
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -46,3 +46,32 @@ proc takeCallback(param: proc(p: int)) = discard
takeCallback x takeCallback x
echo ord v echo ord v
block: # https://github.com/nim-lang/RFCs/issues/8
type
Enum1 = enum
A, B, C
Enum2 = enum
A, Z
proc f(e: Enum1): int = ord(e)
proc g(e: Enum2): int = ord(e)
proc h(e: Enum1): int = ord(e)
proc h(e: Enum2): int = ord(e)
let fA = f(A) # Type of A is well defined
let gA = g(A) # Same as above
let hA1 = h(Enum1.A) # A requires disambiguation
let hA2 = h(Enum2.A) # Similarly
let hA3 = h(B)
let hA4 = h(B)
let x = ord(Enum1.A) # Also
doAssert fA == 0
doAssert gA == 0
doAssert hA1 == 0
doAssert hA2 == 0
doAssert x == 0
doAssert hA3 == 1
doAssert hA4 == 1