summaryrefslogtreecommitdiff
path: root/mesonbuild/ast
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-10-17 16:59:24 +0200
committerDylan Baker <dylan@pnwbakers.com>2025-12-08 10:08:10 -0800
commit3ddde0b6c97d42ee67e1beef6952bee4bde69668 (patch)
tree0e9f271ea04277d678e7e75ef45dfd09f32a19ca /mesonbuild/ast
parentc8ab1d29d62518c630e589941524e13643a4267a (diff)
downloadmeson-3ddde0b6c97d42ee67e1beef6952bee4bde69668.tar.gz
interpreterbase: make ArithmeticNode and MesonOperator both use operator names
This avoids creating a dictionary every time an arithmetic operator is evaluated. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/ast')
-rw-r--r--mesonbuild/ast/interpreter.py12
-rw-r--r--mesonbuild/ast/printer.py4
2 files changed, 8 insertions, 8 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py
index 133d78d5d..d3afb4de3 100644
--- a/mesonbuild/ast/interpreter.py
+++ b/mesonbuild/ast/interpreter.py
@@ -577,7 +577,7 @@ class AstInterpreter(InterpreterBase):
return [left] + right
if isinstance(left, UnknownValue) or isinstance(right, UnknownValue):
return UnknownValue()
- if node.operation == 'add':
+ if node.operation == '+':
if isinstance(left, dict) and isinstance(right, dict):
ret = left.copy()
for k, v in right.items():
@@ -588,16 +588,16 @@ class AstInterpreter(InterpreterBase):
right = [right]
return left + right
return left + right
- elif node.operation == 'sub':
+ elif node.operation == '-':
return left - right
- elif node.operation == 'mul':
+ elif node.operation == '*':
return left * right
- elif node.operation == 'div':
+ elif node.operation == '/':
if isinstance(left, int) and isinstance(right, int):
return left // right
elif isinstance(left, str) and isinstance(right, str):
return os.path.join(left, right).replace('\\', '/')
- elif node.operation == 'mod':
+ elif node.operation == '%':
if isinstance(left, int) and isinstance(right, int):
return left % right
elif isinstance(node, (UnknownValue, IntrospectionBuildTarget, IntrospectionFile, IntrospectionDependency, str, bool, int)):
@@ -671,7 +671,7 @@ class AstInterpreter(InterpreterBase):
if isinstance(lhs, UnknownValue):
newval = UnknownValue()
else:
- newval = mparser.ArithmeticNode(operation='add', left=lhs, operator=_symbol('+'), right=node.value)
+ newval = mparser.ArithmeticNode(operation='+', left=lhs, operator=_symbol('+'), right=node.value)
self.cur_assignments[node.var_name.value].append((self.nesting.copy(), newval))
self.all_assignment_nodes[node.var_name.value].append(node)
diff --git a/mesonbuild/ast/printer.py b/mesonbuild/ast/printer.py
index af865a48d..024b62b9e 100644
--- a/mesonbuild/ast/printer.py
+++ b/mesonbuild/ast/printer.py
@@ -25,9 +25,9 @@ def precedence_level(node: mparser.BaseNode) -> int:
elif isinstance(node, mparser.ComparisonNode):
return 4
elif isinstance(node, mparser.ArithmeticNode):
- if node.operation in {'add', 'sub'}:
+ if node.operation in {'+', '-'}:
return 5
- elif node.operation in {'mod', 'mul', 'div'}:
+ elif node.operation in {'%', '*', '/'}:
return 6
elif isinstance(node, (mparser.NotNode, mparser.UMinusNode)):
return 7