Improve octal fix

This commit is contained in:
Ganesh Viswanathan 2020-06-20 13:52:01 -05:00
commit 69e372beea
3 changed files with 16 additions and 14 deletions

View file

@ -1,4 +1,7 @@
import hashes, macros, osproc, sets, strformat, strutils, tables
import hashes, osproc, sets, strformat, strutils
when not defined(TOAST):
import macros, tables
import os except findExe, sleep

View file

@ -1,4 +1,4 @@
import json, macros, os, osproc, sets, strformat, strutils
import json, os, osproc, sets, strformat, strutils
when nimvm:
when (NimMajor, NimMinor, NimPatch) >= (1, 2, 0):
@ -55,6 +55,7 @@ proc getProjectDir*(): string =
result = querySetting(projectFull).parentDir()
else:
# Get from `macros`
import macros
result = getProjectPath()
else:
discard

View file

@ -140,15 +140,16 @@ proc getIntNode(number, suffix: string): PNode {.inline.} =
var
val: BiggestInt
flags: TNodeFlags
if number.startsWith("0X") or number.startsWith("0x"):
val = parseHexInt(number)
flags = {nfBase16}
elif number.startsWith("0B") or number.startsWith("0b"):
val = parseBinInt(number)
flags = {nfBase2}
elif number.startsWith("0O") or number.startsWith("0o"):
val = parseOctInt(number)
flags = {nfBase8}
if number.len > 1 and number[0] == '0':
if number[1] in ['x', 'X']:
val = parseHexInt(number)
flags = {nfBase16}
elif number[1] in ['b', 'B']:
val = parseBinInt(number)
flags = {nfBase2}
else:
val = parseOctInt(number)
flags = {nfBase8}
else:
val = parseInt(number)
@ -201,9 +202,6 @@ proc processNumberLiteral(gState: State, node: TSNode): PNode =
if number.startsWith("-"):
number = number[1 ..< number.len]
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)):
suffix = number[^3 .. ^1]
number = number[0 ..< ^3]