diff --git a/compiler/nimsets.nim b/compiler/nimsets.nim index 118046283c..93bccae243 100644 --- a/compiler/nimsets.nim +++ b/compiler/nimsets.nim @@ -98,13 +98,13 @@ proc ToTreeSet(s: TBitSet, settype: PType, info: TLineInfo): PNode = result.typ = settype result.info = info e = 0 - while e < high(s) * elemSize: + while e < len(s) * elemSize: if bitSetIn(s, e): a = e b = e while true: Inc(b) - if (b > high(s) * elemSize) or not bitSetIn(s, b): break + if (b >= len(s) * elemSize) or not bitSetIn(s, b): break Dec(b) if a == b: addSon(result, newIntTypeNode(nkIntLit, a + first, elemType)) diff --git a/tests/run/tbug499771.nim b/tests/run/tbug499771.nim index 633ab39f6c..6821484225 100644 --- a/tests/run/tbug499771.nim +++ b/tests/run/tbug499771.nim @@ -1,12 +1,14 @@ discard """ file: "tbug499771.nim" - output: "TSubRange: 5 from 1 to 10" + output: '''TSubRange: 5 from 1 to 10 +true true true''' """ -type TSubRange = range[1 .. 10] +type + TSubRange = range[1 .. 10] + TEnum = enum A, B, C var sr: TSubRange = 5 echo("TSubRange: " & $sr & " from " & $low(TSubRange) & " to " & $high(TSubRange)) - - - +const cset = {A} + {B} +echo A in cset, " ", B in cset, " ", C notin cset