diff --git a/lib/system/repr.nim b/lib/system/repr.nim index 831515eb17..4e9b07c075 100644 --- a/lib/system/repr.nim +++ b/lib/system/repr.nim @@ -74,9 +74,9 @@ proc reprChar(x: char): string {.compilerRtl.} = proc reprEnum(e: int, typ: PNimType): string {.compilerRtl.} = # we read an 'int' but this may have been too large, so mask the other bits: - let e = if typ.size == 1: e and 0xff - elif typ.size == 2: e and 0xffff - elif typ.size == 4: e and 0xffffffff + let e = if typ.size == 1: int(int8(e)) + elif typ.size == 2: int(int16(e)) + elif typ.size == 4: int(int32(e)) else: e # XXX we need a proper narrowing based on signedness here #e and ((1 shl (typ.size*8)) - 1)