diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-06-01 10:43:14 +0200 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-06-03 23:08:54 +0200 |
| commit | fba2f8dad8e1d313b4bab13950bb7607b2b8e1da (patch) | |
| tree | e3ca5144e20fbe2d4acd424e3c3a54908f273b6b /tools/qtpy2cpp_lib/visitor.py | |
| parent | e141ea41cf6f2840281ab6e52b0861a6d1dcc137 (diff) | |
qtpy2cpp: Handle context managers
Pick-to: 6.3
Task-number: PYSIDE-1945
Change-Id: I70dd4c139ef690964f1a65c6d995a0112d3dcfa3
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'tools/qtpy2cpp_lib/visitor.py')
| -rw-r--r-- | tools/qtpy2cpp_lib/visitor.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tools/qtpy2cpp_lib/visitor.py b/tools/qtpy2cpp_lib/visitor.py index 97048dec4..5bb02db31 100644 --- a/tools/qtpy2cpp_lib/visitor.py +++ b/tools/qtpy2cpp_lib/visitor.py @@ -180,6 +180,9 @@ class ConvertVisitor(ast.NodeVisitor, CppFormatter): def visit_Call(self, node): self._format_call(node) + # Context manager expression? + if self._stack and isinstance(self._stack[-1], ast.withitem): + self._output_file.write(";\n") def _write_function_args(self, args_node): # Manually do visit(), skip the children of func @@ -301,6 +304,9 @@ class ConvertVisitor(ast.NodeVisitor, CppFormatter): def visit_Name(self, node): """Format a variable reference (cf visit_Attribute)""" + # Context manager variable? + if self._stack and isinstance(self._stack[-1], ast.withitem): + return self._output_file.write(format_reference(node)) def visit_NameConstant(self, node): @@ -342,6 +348,20 @@ class ConvertVisitor(ast.NodeVisitor, CppFormatter): def visit_UnOp(self, node): self.generic_visit(node) + def visit_With(self, node): + self.indent() + self.INDENT() + self._output_file.write("{ // Converted from context manager\n") + for item in node.items: + self.INDENT() + if item.optional_vars: + self._output_file.write(format_reference(item.optional_vars)) + self._output_file.write(" = ") + self.generic_visit(node) + self.INDENT() + self._output_file.write("}\n") + self.dedent() + def _debug_enter(self, node, parent=None): message = '{}>generic_visit({})'.format(' ' * self ._debug_indent, debug_format_node(node)) |
