diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-12-07 14:42:23 +0100 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2020-03-02 10:34:55 +0100 |
commit | c14aea2812fd2be94998bdb174e9a4681aeea394 (patch) | |
tree | 7f8532528ea3d84db5491f5d766415649592bcd1 /mesonbuild/ast/interpreter.py | |
parent | 200738a3e6b48671aac2865c304dded96179e4ac (diff) | |
download | meson-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.py | 10 |
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), {} |