diff --git a/compiler/renderer.nim b/compiler/renderer.nim index 9c7609f9a4..88b9adf27a 100644 --- a/compiler/renderer.nim +++ b/compiler/renderer.nim @@ -336,7 +336,7 @@ proc litAux(g: TSrcGen; n: PNode, x: BiggestInt, size: int): string = if nfBase2 in n.flags: result = "0b" & toBin(x, size * 8) elif nfBase8 in n.flags: - var y = if size < sizeof(BiggestInt): x and ((1 shl (size*8)) - 1) + var y = if size < sizeof(BiggestInt): x and ((1.BiggestInt shl (size*8)) - 1) else: x result = "0o" & toOct(y, size * 3) elif nfBase16 in n.flags: result = "0x" & toHex(x, size * 2) diff --git a/tests/macros/tmacros_issues.nim b/tests/macros/tmacros_issues.nim index 3d992a27ff..19c706a821 100644 --- a/tests/macros/tmacros_issues.nim +++ b/tests/macros/tmacros_issues.nim @@ -29,6 +29,7 @@ array[0 .. 100, int] 10 test 0o377'i8 +0o000000000755'i32 1 2 3 @@ -257,6 +258,7 @@ macro toRendererBug(n): untyped = result = newLit repr(n) echo toRendererBug(0o377'i8) +echo toRendererBug(0o755'i32) # bug #12129 macro foobar() =