Handle octal values correctly
This commit is contained in:
parent
7e0b0b1a2b
commit
7c9d826998
3 changed files with 5 additions and 2 deletions
|
|
@ -140,8 +140,6 @@ proc getIntNode(number, suffix: string): PNode {.inline.} =
|
||||||
var
|
var
|
||||||
val: BiggestInt
|
val: BiggestInt
|
||||||
flags: TNodeFlags
|
flags: TNodeFlags
|
||||||
# I realize these regex are wasteful on performance, but
|
|
||||||
# couldn't come up with a better idea.
|
|
||||||
if number.startsWith("0X") or number.startsWith("0x"):
|
if number.startsWith("0X") or number.startsWith("0x"):
|
||||||
val = parseHexInt(number)
|
val = parseHexInt(number)
|
||||||
flags = {nfBase16}
|
flags = {nfBase16}
|
||||||
|
|
@ -203,6 +201,9 @@ proc processNumberLiteral(gState: State, node: TSNode): PNode =
|
||||||
if number.startsWith("-"):
|
if number.startsWith("-"):
|
||||||
number = number[1 ..< number.len]
|
number = number[1 ..< number.len]
|
||||||
prefix = "-"
|
prefix = "-"
|
||||||
|
if number.len > 1 and number[0] == '0' and number[1] notin ['x', 'X']:
|
||||||
|
# Octal 0123
|
||||||
|
number = "0o" & number[1 .. ^1]
|
||||||
if tripleEndings.any(proc (s: string): bool = number.endsWith(s)):
|
if tripleEndings.any(proc (s: string): bool = number.endsWith(s)):
|
||||||
suffix = number[^3 .. ^1]
|
suffix = number[^3 .. ^1]
|
||||||
number = number[0 ..< ^3]
|
number = number[0 ..< ^3]
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ extern "C" {
|
||||||
#define C 0x10
|
#define C 0x10
|
||||||
#define D "hello"
|
#define D "hello"
|
||||||
#define E 'c'
|
#define E 'c'
|
||||||
|
#define F 01234
|
||||||
|
|
||||||
#define UEXPR (1234u << 1)
|
#define UEXPR (1234u << 1)
|
||||||
#define ULEXPR (1234ul << 2)
|
#define ULEXPR (1234ul << 2)
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,7 @@ assert B == 1.0
|
||||||
assert C == 0x10
|
assert C == 0x10
|
||||||
assert D == "hello"
|
assert D == "hello"
|
||||||
assert E == 'c'
|
assert E == 'c'
|
||||||
|
assert F == 0o1234
|
||||||
|
|
||||||
assert not defined(NOTSUPPORTEDSTR)
|
assert not defined(NOTSUPPORTEDSTR)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue