diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-12-08 19:22:14 +0100 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2020-03-02 10:42:43 +0100 |
commit | 5a89a6f80481a9c17e00f102d341bce8bfc56b17 (patch) | |
tree | 6ea1e8b1add10e8b1fc6aae2e18689f6af853c79 /mesonbuild/ast/interpreter.py | |
parent | c48b0dea275a4a4aa80d4fd2700e82c230f27467 (diff) | |
download | meson-5a89a6f80481a9c17e00f102d341bce8bfc56b17.zip meson-5a89a6f80481a9c17e00f102d341bce8bfc56b17.tar.gz meson-5a89a6f80481a9c17e00f102d341bce8bfc56b17.tar.bz2 |
types: (partially) annotate interpreterbase.py
This commit annotates most of interpreterbase.py. However,
there are stil the @wraps missing, since I am unsure what
the types are supposed to be here.
Diffstat (limited to 'mesonbuild/ast/interpreter.py')
-rw-r--r-- | mesonbuild/ast/interpreter.py | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py index 5cf6f28..0eb76cc 100644 --- a/mesonbuild/ast/interpreter.py +++ b/mesonbuild/ast/interpreter.py @@ -19,7 +19,7 @@ from .visitor import AstVisitor from .. import interpreterbase, mparser, mesonlib from .. import environment -from ..interpreterbase import InvalidArguments, BreakRequest, ContinueRequest +from ..interpreterbase import InvalidArguments, BreakRequest, ContinueRequest, TYPE_nvar, TYPE_nkwargs from ..mparser import ( AndNode, ArgumentNode, @@ -33,10 +33,8 @@ from ..mparser import ( ForeachClauseNode, IdNode, IfClauseNode, - IfNode, IndexNode, MethodNode, - NotNode, OrNode, PlusAssignmentNode, StringNode, @@ -132,7 +130,7 @@ class AstInterpreter(interpreterbase.InterpreterBase): 'summary': self.func_do_nothing, }) - def func_do_nothing(self, node: BaseNode, args: T.List[T.Union[BaseNode, str, int, float, bool]], kwargs: T.Dict[str, T.Union[BaseNode, str, int, float, bool]]) -> bool: + def func_do_nothing(self, node: BaseNode, args: T.List[TYPE_nvar], kwargs: T.Dict[str, TYPE_nvar]) -> bool: return True def load_root_meson_file(self) -> None: @@ -140,7 +138,7 @@ class AstInterpreter(interpreterbase.InterpreterBase): for i in self.visitors: self.ast.accept(i) - def func_subdir(self, node: BaseNode, args: T.List[T.Union[BaseNode, str, int, float, bool]], kwargs: T.Dict[str, T.Union[BaseNode, str, int, float, bool]]) -> None: + def func_subdir(self, node: BaseNode, args: T.List[TYPE_nvar], kwargs: T.Dict[str, TYPE_nvar]) -> None: args = self.flatten_args(args) if len(args) != 1 or not isinstance(args[0], str): sys.stderr.write('Unable to evaluate subdir({}) in AstInterpreter --> Skipping\n'.format(args)) @@ -312,7 +310,7 @@ class AstInterpreter(interpreterbase.InterpreterBase): elif isinstance(node, MethodNode): src = quick_resolve(node.source_object) - margs = self.flatten_args(node.args, include_unknown_args, id_loop_detect) + margs = self.flatten_args(node.args.arguments, include_unknown_args, id_loop_detect) try: if isinstance(src, str): result = self.string_method_call(src, node.name, margs) @@ -331,7 +329,7 @@ class AstInterpreter(interpreterbase.InterpreterBase): if isinstance(result, BaseNode): result = self.resolve_node(result, include_unknown_args, id_loop_detect) elif isinstance(result, list): - new_res = [] # type: T.List[T.Union[BaseNode, str, bool, int, float]] + new_res = [] # type: T.List[TYPE_nvar] for i in result: if isinstance(i, BaseNode): resolved = self.resolve_node(i, include_unknown_args, id_loop_detect) @@ -343,12 +341,14 @@ class AstInterpreter(interpreterbase.InterpreterBase): return result - def flatten_args(self, args: T.Any, include_unknown_args: bool = False, id_loop_detect: T.Optional[T.List[str]] = None) -> T.List[T.Union[BaseNode, str, bool, int, float]]: + def flatten_args(self, args_raw: T.Sequence[TYPE_nvar], include_unknown_args: bool = False, id_loop_detect: T.Optional[T.List[str]] = None) -> T.List[TYPE_nvar]: # Make sure we are always dealing with lists - if not isinstance(args, list): - args = [args] + if isinstance(args_raw, list): + args = args_raw + else: + args = [args_raw] - flattend_args = [] # type: T.List[T.Union[BaseNode, str, bool, int, float]] + flattend_args = [] # type: T.List[TYPE_nvar] # Resolve the contents of args for i in args: @@ -362,9 +362,17 @@ class AstInterpreter(interpreterbase.InterpreterBase): flattend_args += [i] return flattend_args - def flatten_kwargs(self, kwargs: T.Dict[str, T.Union[BaseNode, str, bool, int, float]], include_unknown_args: bool = False) -> T.Dict[str, T.Union[BaseNode, str, bool, int, float]]: + def flatten_kwargs(self, kwargs: TYPE_nkwargs, include_unknown_args: bool = False) -> T.Dict[str, TYPE_nvar]: flattend_kwargs = {} - for key, val in kwargs.items(): + for key_node, val in kwargs.items(): + key = None # type: str + if isinstance(key_node, str): + key = key_node + elif isinstance(key_node, StringNode): + assert isinstance(key_node.value, str) + key = key_node.value + else: + continue if isinstance(val, BaseNode): resolved = self.resolve_node(val, include_unknown_args) if resolved is not None: |