summaryrefslogtreecommitdiff
path: root/mesonbuild/mparser.py
diff options
context:
space:
mode:
authorCharles Brunet <charles.brunet@optelgroup.com>2023-08-23 09:32:21 -0400
committerCharles Brunet <charles.brunet@optelgroup.com>2023-09-11 07:51:17 -0400
commit5707d390174b7e8db431bc9cee2257043ea59f84 (patch)
tree9d29c240e827d7f92ff8c424679000257ad40de4 /mesonbuild/mparser.py
parent3ff3b8abf6f24f676b6c03250ba96a365ae77b03 (diff)
downloadmeson-5707d390174b7e8db431bc9cee2257043ea59f84.tar.gz
parser: preserve number base
Diffstat (limited to 'mesonbuild/mparser.py')
-rw-r--r--mesonbuild/mparser.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py
index 9867c7164..5ab76e7dc 100644
--- a/mesonbuild/mparser.py
+++ b/mesonbuild/mparser.py
@@ -217,7 +217,7 @@ class Lexer:
lineno += len(lines) - 1
line_start = mo.end() - len(lines[-1])
elif tid == 'number':
- value = int(match_text, base=0)
+ value = match_text
elif tid == 'eol_cont':
lineno += 1
line_start = loc
@@ -285,8 +285,16 @@ class IdNode(ElementaryNode[str]):
def __str__(self) -> str:
return "Id node: '%s' (%d, %d)." % (self.value, self.lineno, self.colno)
+@dataclass(unsafe_hash=True)
class NumberNode(ElementaryNode[int]):
- pass
+
+ raw_value: str = field(hash=False)
+
+ def __init__(self, token: Token[str]):
+ BaseNode.__init__(self, token.lineno, token.colno, token.filename)
+ self.raw_value = token.value
+ self.value = int(token.value, base=0)
+ self.bytespan = token.bytespan
class StringNode(ElementaryNode[str]):
def __str__(self) -> str: