aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/ast
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2020-09-08 12:05:39 +0200
committerDaniel Mensinger <daniel@mensinger-ka.de>2020-09-08 19:56:20 +0200
commit4ed5c3acbf4ff4111bc9db1370d0818ad4648f5c (patch)
tree5e4c81037917aaabbf30e91148ea2a61076ac4d0 /mesonbuild/ast
parenteca4c6fcaf7393a4a042ca2c6d104e83e0de2ffe (diff)
downloadmeson-4ed5c3acbf4ff4111bc9db1370d0818ad4648f5c.zip
meson-4ed5c3acbf4ff4111bc9db1370d0818ad4648f5c.tar.gz
meson-4ed5c3acbf4ff4111bc9db1370d0818ad4648f5c.tar.bz2
IntrospectInterpreter: allow dictionaries with nonconstant keys
Something like {a: foo} currently stymies the IntrospectionInterpreter and breaks introspection of the source directory. The fix is just to walk the keys and return a dummy dictionary. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/ast')
-rw-r--r--mesonbuild/ast/interpreter.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py
index 6a826ef..fb77db0 100644
--- a/mesonbuild/ast/interpreter.py
+++ b/mesonbuild/ast/interpreter.py
@@ -192,6 +192,16 @@ class AstInterpreter(interpreterbase.InterpreterBase):
self.evaluate_statement(node.trueblock)
self.evaluate_statement(node.falseblock)
+ def evaluate_dictstatement(self, node: mparser.DictNode) -> TYPE_nkwargs:
+ (arguments, kwargs) = self.reduce_arguments(node.args, resolve_key_nodes=False)
+ assert (not arguments)
+ self.argument_depth += 1
+ for key, value in kwargs.items():
+ if isinstance(key, BaseNode):
+ self.evaluate_statement(key)
+ self.argument_depth -= 1
+ return {}
+
def evaluate_plusassign(self, node: PlusAssignmentNode) -> None:
assert(isinstance(node, PlusAssignmentNode))
# Cheat by doing a reassignment