aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/ast/interpreter.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-12-07 14:42:23 +0100
committerDaniel Mensinger <daniel@mensinger-ka.de>2020-03-02 10:34:55 +0100
commitc14aea2812fd2be94998bdb174e9a4681aeea394 (patch)
tree7f8532528ea3d84db5491f5d766415649592bcd1 /mesonbuild/ast/interpreter.py
parent200738a3e6b48671aac2865c304dded96179e4ac (diff)
downloadmeson-c14aea2812fd2be94998bdb174e9a4681aeea394.zip
meson-c14aea2812fd2be94998bdb174e9a4681aeea394.tar.gz
meson-c14aea2812fd2be94998bdb174e9a4681aeea394.tar.bz2
types: Annotate mparser.py
This also fixes that the keys in ArgumentNode.kwargs are all of the type BaseNode now. Before this commit, it was possible that both strings and Nodes where used as keys.
Diffstat (limited to 'mesonbuild/ast/interpreter.py')
-rw-r--r--mesonbuild/ast/interpreter.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py
index 5f47ad3..09d8d32 100644
--- a/mesonbuild/ast/interpreter.py
+++ b/mesonbuild/ast/interpreter.py
@@ -29,6 +29,7 @@ from ..mparser import (
ElementaryNode,
EmptyNode,
IdNode,
+ StringNode,
MethodNode,
PlusAssignmentNode,
TernaryNode,
@@ -201,9 +202,16 @@ class AstInterpreter(interpreterbase.InterpreterBase):
def reduce_arguments(self, args):
if isinstance(args, ArgumentNode):
+ kwargs = {} # type: T.Dict[T.Union[str, BaseNode], BaseNode]
+ for key, val in args.kwargs.items():
+ if isinstance(key, (StringNode, IdNode)):
+ assert isinstance(key.value, str)
+ kwargs[key.value] = val
+ else:
+ kwargs[key] = val
if args.incorrect_order():
raise InvalidArguments('All keyword arguments must be after positional arguments.')
- return self.flatten_args(args.arguments), args.kwargs
+ return self.flatten_args(args.arguments), kwargs
else:
return self.flatten_args(args), {}