This commit is contained in:
flywind 2020-11-02 15:56:51 +08:00 • committed by GitHub
commit 27eb19cc48
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 4 deletions

View file

@ -747,8 +747,9 @@ proc firstOrd*(conf: ConfigRef; t: PType): Int128 =
if t.len > 0 and t[0] != nil:
result = firstOrd(conf, t[0])
else:
assert(t.n[0].kind == nkSym)
result = toInt128(t.n[0].sym.position)
if t.n.len > 0:
assert(t.n[0].kind == nkSym)
result = toInt128(t.n[0].sym.position)
of tyGenericInst, tyDistinct, tyTypeDesc, tyAlias, tySink,
tyStatic, tyInferred, tyUserTypeClasses, tyLent:
result = firstOrd(conf, lastSon(t))
@ -804,8 +805,9 @@ proc lastOrd*(conf: ConfigRef; t: PType): Int128 =
of tyUInt64:
result = toInt128(0xFFFFFFFFFFFFFFFF'u64)
of tyEnum:
assert(t.n[^1].kind == nkSym)
result = toInt128(t.n[^1].sym.position)
if t.n.len > 0:
assert(t.n[^1].kind == nkSym)
result = toInt128(t.n[^1].sym.position)
of tyGenericInst, tyDistinct, tyTypeDesc, tyAlias, tySink,
tyStatic, tyInferred, tyUserTypeClasses, tyLent:
result = lastOrd(conf, lastSon(t))

11
tests/enum/tenum_self.nim Normal file
View file

@ -0,0 +1,11 @@
discard """
errormsg: "1 can't be converted to ErrorFoo"
"""
type
Foo = enum
Bar = 0.Foo
ErrorFoo = enum
eBar = 1.ErrorFoo