From 5cd11473540a4f7948daaa3268815c7f79c60cfb Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Wed, 13 Dec 2023 13:20:00 -0800 Subject: ast/printer: fix mypy issues Other than one case that I think cannot be actually hit (or it would fail). --- mesonbuild/ast/printer.py | 18 ++++++++++-------- mesonbuild/ast/visitor.py | 4 ++-- run_mypy.py | 1 + 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/mesonbuild/ast/printer.py b/mesonbuild/ast/printer.py index bbaca35d9..459912f2d 100644 --- a/mesonbuild/ast/printer.py +++ b/mesonbuild/ast/printer.py @@ -65,8 +65,9 @@ class AstPrinter(AstVisitor): node.lineno = self.curr_line or node.lineno def escape(self, val: str) -> str: - return val.translate(str.maketrans({'\'': '\\\'', - '\\': '\\\\'})) + return val.translate(str.maketrans(T.cast( + 'T.Dict[str, T.Union[str, int]]', + {'\'': '\\\'', '\\': '\\\\'}))) def visit_StringNode(self, node: mparser.StringNode) -> None: assert isinstance(node.value, str) @@ -78,7 +79,7 @@ class AstPrinter(AstVisitor): self.append("f'" + self.escape(node.value) + "'", node) node.lineno = self.curr_line or node.lineno - def visit_MultilineStringNode(self, node: mparser.StringNode) -> None: + def visit_MultilineStringNode(self, node: mparser.MultilineFormatStringNode) -> None: assert isinstance(node.value, str) self.append("'''" + node.value + "'''", node) node.lineno = self.curr_line or node.lineno @@ -241,21 +242,22 @@ class AstPrinter(AstVisitor): class RawPrinter(AstVisitor): - def __init__(self): + def __init__(self) -> None: self.result = '' - def visit_default_func(self, node: mparser.BaseNode): - self.result += node.value + def visit_default_func(self, node: mparser.BaseNode) -> None: + # XXX: this seems like it could never actually be reached... + self.result += node.value # type: ignore[attr-defined] if node.whitespaces: node.whitespaces.accept(self) - def visit_unary_operator(self, node: mparser.UnaryOperatorNode): + def visit_unary_operator(self, node: mparser.UnaryOperatorNode) -> None: node.operator.accept(self) node.value.accept(self) if node.whitespaces: node.whitespaces.accept(self) - def visit_binary_operator(self, node: mparser.BinaryOperatorNode): + def visit_binary_operator(self, node: mparser.BinaryOperatorNode) -> None: node.left.accept(self) node.operator.accept(self) node.right.accept(self) diff --git a/mesonbuild/ast/visitor.py b/mesonbuild/ast/visitor.py index 2b5cea674..60aca61f9 100644 --- a/mesonbuild/ast/visitor.py +++ b/mesonbuild/ast/visitor.py @@ -32,7 +32,7 @@ class AstVisitor: def visit_FormatStringNode(self, node: mparser.FormatStringNode) -> None: self.visit_default_func(node) - def visit_MultilineStringNode(self, node: mparser.StringNode) -> None: + def visit_MultilineStringNode(self, node: mparser.MultilineFormatStringNode) -> None: self.visit_default_func(node) def visit_FormatMultilineStringNode(self, node: mparser.FormatStringNode) -> None: @@ -138,7 +138,7 @@ class AstVisitor: node.condition.accept(self) node.block.accept(self) - def visit_ElseNode(self, node: mparser.IfNode) -> None: + def visit_ElseNode(self, node: mparser.ElseNode) -> None: self.visit_default_func(node) node.block.accept(self) diff --git a/run_mypy.py b/run_mypy.py index 067080b9a..c3f391997 100755 --- a/run_mypy.py +++ b/run_mypy.py @@ -24,6 +24,7 @@ modules = [ 'mesonbuild/wrap/', # specific files + 'mesonbuild/ast/printer.py', 'mesonbuild/arglist.py', 'mesonbuild/backend/backends.py', 'mesonbuild/backend/nonebackend.py', -- cgit v1.2.3