aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/ast/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/ast/interpreter.py')
-rw-r--r--mesonbuild/ast/interpreter.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py
index 28f1150..8893e9b 100644
--- a/mesonbuild/ast/interpreter.py
+++ b/mesonbuild/ast/interpreter.py
@@ -47,6 +47,7 @@ class AstInterpreter(interpreterbase.InterpreterBase):
def __init__(self, source_root, subdir):
super().__init__(source_root, subdir)
self.visited_subdirs = {}
+ self.assignments = {}
self.funcs.update({'project': self.func_do_nothing,
'test': self.func_do_nothing,
'benchmark': self.func_do_nothing,
@@ -133,7 +134,11 @@ class AstInterpreter(interpreterbase.InterpreterBase):
return 0
def evaluate_plusassign(self, node):
- return 0
+ assert(isinstance(node, mparser.PlusAssignmentNode))
+ if node.var_name not in self.assignments:
+ self.assignments[node.var_name] = []
+ self.assignments[node.var_name] += [node.value] # Save a reference to the value node
+ self.evaluate_statement(node.value) # Evaluate the value just in case
def evaluate_indexing(self, node):
return 0
@@ -168,7 +173,9 @@ class AstInterpreter(interpreterbase.InterpreterBase):
return 0
def assignment(self, node):
- pass
+ assert(isinstance(node, mparser.AssignmentNode))
+ self.assignments[node.var_name] = [node.value] # Save a reference to the value node
+ self.evaluate_statement(node.value) # Evaluate the value just in case
def flatten_args(self, args, include_unknown_args: bool = False):
# Resolve mparser.ArrayNode if needed