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 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 nimvm:
when (NimMajor, NimMinor, NimPatch) >= (1, 2, 0): when (NimMajor, NimMinor, NimPatch) >= (1, 2, 0):
@ -55,6 +55,7 @@ proc getProjectDir*(): string =
result = querySetting(projectFull).parentDir() result = querySetting(projectFull).parentDir()
else: else:
# Get from `macros` # Get from `macros`
import macros
result = getProjectPath() result = getProjectPath()
else: else:
discard discard

View file

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