aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-05-27 13:26:54 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-06-02 04:59:52 +0000
commit4ea4ab05497e59966dad0df56709df3152139e6c (patch)
tree8ed5e2e7c2145edec447fa8b5427c8bfdfa31f93
parentc1e7ec62d88fb0fe797a4da225ce485ae24801e5 (diff)
qtpy2cpp: Improve error handling
Format messages in a file:line: format. Fix an error causing an exception. Task-number: PYSIDE-1945 Change-Id: I16a1fd6daa96521adfe53f23090f61fbbc581e84 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> (cherry picked from commit 9d2779a12f1c71db26b3ddc81c6006d7f7244772) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--tools/qtpy2cpp.py4
-rw-r--r--tools/qtpy2cpp_lib/formatter.py2
-rw-r--r--tools/qtpy2cpp_lib/visitor.py17
3 files changed, 13 insertions, 10 deletions
diff --git a/tools/qtpy2cpp.py b/tools/qtpy2cpp.py
index 3862176fc..a41226a04 100644
--- a/tools/qtpy2cpp.py
+++ b/tools/qtpy2cpp.py
@@ -81,7 +81,7 @@ if __name__ == '__main__':
ast_tree = ConvertVisitor.create_ast(input_file)
if args.stdout:
sys.stdout.write(f'// Converted from {input_file}\n')
- ConvertVisitor(sys.stdout).visit(ast_tree)
+ ConvertVisitor(input_file, sys.stdout).visit(ast_tree)
sys.exit(0)
target_file = file_root + '.cpp'
@@ -95,5 +95,5 @@ if __name__ == '__main__':
with open(target_file, "w") as file:
file.write(f'// Converted from {input_file}\n')
- ConvertVisitor(file).visit(ast_tree)
+ ConvertVisitor(input_file, file).visit(ast_tree)
logger.info(f"Wrote {target_file} ...")
diff --git a/tools/qtpy2cpp_lib/formatter.py b/tools/qtpy2cpp_lib/formatter.py
index 2b77d3ee1..ae79bbef0 100644
--- a/tools/qtpy2cpp_lib/formatter.py
+++ b/tools/qtpy2cpp_lib/formatter.py
@@ -69,7 +69,7 @@ def format_inheritance(class_def_node):
def format_for_target(target_node):
if isinstance(target_node, ast.Tuple): # for i,e in enumerate()
result = ''
- for i, el in enumerate(target_node):
+ for i, el in enumerate(target_node.elts):
if i > 0:
result += ', '
result += format_reference(el)
diff --git a/tools/qtpy2cpp_lib/visitor.py b/tools/qtpy2cpp_lib/visitor.py
index 280bb51f4..f5476ac10 100644
--- a/tools/qtpy2cpp_lib/visitor.py
+++ b/tools/qtpy2cpp_lib/visitor.py
@@ -63,9 +63,10 @@ class ConvertVisitor(ast.NodeVisitor, CppFormatter):
debug = False
- def __init__(self, output_file):
+ def __init__(self, file_name, output_file):
ast.NodeVisitor.__init__(self)
CppFormatter.__init__(self, output_file)
+ self._file_name = file_name
self._class_scope = [] # List of class names
self._stack = [] # nodes
self._debug_indent = 0
@@ -87,9 +88,10 @@ class ConvertVisitor(ast.NodeVisitor, CppFormatter):
super().generic_visit(node)
except Exception as e:
line_no = node.lineno if hasattr(node, 'lineno') else -1
- message = 'Error "{}" at line {}'.format(str(e), line_no)
+ error_message = str(e)
+ message = f'{self._file_name}:{line_no}: Error "{error_message}"'
warnings.warn(message)
- self._output_file.write(f'\n// {message}\n')
+ self._output_file.write(f'\n// {error_message}\n')
del self._stack[-1]
if self.debug:
self._debug_leave(node)
@@ -101,13 +103,14 @@ class ConvertVisitor(ast.NodeVisitor, CppFormatter):
def visit_Assign(self, node):
self._output_file.write('\n')
self.INDENT()
+ line_no = node.lineno if hasattr(node, 'lineno') else -1
for target in node.targets:
if isinstance(target, ast.Tuple):
- warnings.warn('List assignment not handled (line {}).'.
- format(node.lineno))
+ w = f"{self._file_name}:{line_no}: List assignment not handled."
+ warnings.warn(w)
elif isinstance(target, ast.Subscript):
- warnings.warn('Subscript assignment not handled (line {}).'.
- format(node.lineno))
+ w = f"{self._file_name}:{line_no}: Subscript assignment not handled."
+ warnings.warn(w)
else:
self._output_file.write(format_reference(target))
self._output_file.write(' = ')