diff options
-rw-r--r-- | compiler/types.nim | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/types.nim b/compiler/types.nim index ca2718ed1..c06e906e5 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -653,7 +653,14 @@ proc lengthOrd(t: PType): BiggestInt = case t.kind of tyInt64, tyInt32, tyInt: result = lastOrd(t) of tyDistinct, tyConst, tyMutable: result = lengthOrd(t.sons[0]) - else: result = lastOrd(t) - firstOrd(t) + 1 + else: + let last = lastOrd t + let first = firstOrd t + # XXX use a better overflow check here: + if last == high(BiggestInt) and first <= 0: + result = last + else: + result = lastOrd(t) - firstOrd(t) + 1 # -------------- type equality ----------------------------------------------- |