aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/ast/interpreter.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2020-08-28 17:58:54 +0200
committerDaniel Mensinger <daniel@mensinger-ka.de>2020-09-08 20:15:55 +0200
commit9c1e72202de8015e16a4ba2ccf8ea50c10f474f7 (patch)
tree5d6c3d66334734764e951d92daf27347dcf1cdaa /mesonbuild/ast/interpreter.py
parent4ed5c3acbf4ff4111bc9db1370d0818ad4648f5c (diff)
downloadmeson-9c1e72202de8015e16a4ba2ccf8ea50c10f474f7.zip
meson-9c1e72202de8015e16a4ba2ccf8ea50c10f474f7.tar.gz
meson-9c1e72202de8015e16a4ba2ccf8ea50c10f474f7.tar.bz2
typing: refactor dict handling
Diffstat (limited to 'mesonbuild/ast/interpreter.py')
-rw-r--r--mesonbuild/ast/interpreter.py16
1 files changed, 8 insertions, 8 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py
index fb77db0..55812d3 100644
--- a/mesonbuild/ast/interpreter.py
+++ b/mesonbuild/ast/interpreter.py
@@ -38,7 +38,6 @@ from ..mparser import (
NotNode,
OrNode,
PlusAssignmentNode,
- StringNode,
TernaryNode,
UMinusNode,
)
@@ -216,15 +215,16 @@ class AstInterpreter(interpreterbase.InterpreterBase):
def unknown_function_called(self, func_name: str) -> None:
pass
- def reduce_arguments(self, args: ArgumentNode, resolve_key_nodes: bool = True) -> T.Tuple[T.List[TYPE_nvar], TYPE_nkwargs]:
+ def reduce_arguments(
+ self,
+ args: mparser.ArgumentNode,
+ key_resolver: T.Callable[[mparser.BaseNode], str] = interpreterbase.default_resolve_key,
+ duplicate_key_error: T.Optional[str] = None,
+ ) -> T.Tuple[T.List[TYPE_nvar], TYPE_nkwargs]:
if isinstance(args, ArgumentNode):
- kwargs = {} # type: T.Dict[T.Union[str, BaseNode], TYPE_nvar]
+ kwargs = {} # type: T.Dict[str, TYPE_nvar]
for key, val in args.kwargs.items():
- if resolve_key_nodes and isinstance(key, (StringNode, IdNode)):
- assert isinstance(key.value, str)
- kwargs[key.value] = val
- else:
- kwargs[key] = val
+ kwargs[key_resolver(key)] = val
if args.incorrect_order():
raise InvalidArguments('All keyword arguments must be after positional arguments.')
return self.flatten_args(args.arguments), kwargs