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