diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-10-17 16:59:24 +0200 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-12-08 10:08:10 -0800 |
| commit | 3ddde0b6c97d42ee67e1beef6952bee4bde69668 (patch) | |
| tree | 0e9f271ea04277d678e7e75ef45dfd09f32a19ca /mesonbuild/ast | |
| parent | c8ab1d29d62518c630e589941524e13643a4267a (diff) | |
| download | meson-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.py | 12 | ||||
| -rw-r--r-- | mesonbuild/ast/printer.py | 4 |
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 |
