aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreterbase/interpreterbase.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2021-10-22 18:39:54 +0200
committerEli Schwartz <eschwartz93@gmail.com>2021-10-24 09:58:20 -0400
commit2d8da3cb1167c47bb4425e5c58bb6c0c34f52e10 (patch)
treec2c113e3f1b58ba64a82c06238b208796c08ddde /mesonbuild/interpreterbase/interpreterbase.py
parentffc8721465f87dae25cbabd2ee95b3cc234beff6 (diff)
downloadmeson-2d8da3cb1167c47bb4425e5c58bb6c0c34f52e10.zip
meson-2d8da3cb1167c47bb4425e5c58bb6c0c34f52e10.tar.gz
meson-2d8da3cb1167c47bb4425e5c58bb6c0c34f52e10.tar.bz2
interpreter: Fix missing featuer check (fixes #9425)
Diffstat (limited to 'mesonbuild/interpreterbase/interpreterbase.py')
-rw-r--r--mesonbuild/interpreterbase/interpreterbase.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/mesonbuild/interpreterbase/interpreterbase.py b/mesonbuild/interpreterbase/interpreterbase.py
index bc21951..555db3c 100644
--- a/mesonbuild/interpreterbase/interpreterbase.py
+++ b/mesonbuild/interpreterbase/interpreterbase.py
@@ -303,6 +303,7 @@ class InterpreterBase:
if operator in (MesonOperator.IN, MesonOperator.NOT_IN):
val1, val2 = val2, val1
+ val1.current_node = node
return self._holderify(val1.operator_call(operator, _unholder(val2)))
def evaluate_andstatement(self, cur: mparser.AndNode) -> InterpreterObject:
@@ -333,6 +334,7 @@ class InterpreterBase:
v = self.evaluate_statement(cur.value)
if isinstance(v, Disabler):
return v
+ v.current_node = cur
return self._holderify(v.operator_call(MesonOperator.UMINUS, None))
def evaluate_arithmeticstatement(self, cur: mparser.ArithmeticNode) -> InterpreterObject:
@@ -350,6 +352,7 @@ class InterpreterBase:
'div': MesonOperator.DIV,
'mod': MesonOperator.MOD,
}
+ l.current_node = cur
res = l.operator_call(mapping[cur.operation], _unholder(r))
return self._holderify(res)
@@ -358,6 +361,7 @@ class InterpreterBase:
result = self.evaluate_statement(node.condition)
if isinstance(result, Disabler):
return result
+ result.current_node = node
result_bool = result.operator_call(MesonOperator.BOOL, None)
if result_bool:
return self.evaluate_statement(node.trueblock)
@@ -420,6 +424,7 @@ class InterpreterBase:
# Remember that all variables are immutable. We must always create a
# full new variable and then assign it.
old_variable = self.get_variable(varname)
+ old_variable.current_node = node
new_value = self._holderify(old_variable.operator_call(MesonOperator.PLUS, _unholder(addition)))
self.set_variable(varname, new_value)
@@ -432,6 +437,7 @@ class InterpreterBase:
if iobject is None:
raise InterpreterException('Tried to evaluate indexing on None')
+ iobject.current_node = node
return self._holderify(iobject.operator_call(MesonOperator.INDEX, index))
def function_call(self, node: mparser.FunctionNode) -> T.Optional[InterpreterObject]: