# HG changeset patch # User paulb@jeremy # Date 1160173408 -7200 # Node ID 3199133437e9f3afe8a33be579d986a3a158135f # Parent 48b747a69cc6e46e54a800525ab92c51ecad863c Added support for reporting annotation errors. diff -r 48b747a69cc6 -r 3199133437e9 viewer.py --- a/viewer.py Sat Oct 07 00:22:58 2006 +0200 +++ b/viewer.py Sat Oct 07 00:23:28 2006 +0200 @@ -41,12 +41,15 @@ self.dispatch(module) def dispatch(self, node): - self.print_line(getattr(node, "filename", None), getattr(node, "lineno", None)) + self.dispatch_only(node) ASTVisitor.dispatch(self, node) - def print_line(self, filename, lineno): + def dispatch_only(self, node, every_time=0): + self.print_line(getattr(node, "filename", None), getattr(node, "lineno", None), every_time) + + def print_line(self, filename, lineno, every_time): last_printed = self.printed_lines.get(filename, 0) - if lineno > last_printed: + if lineno > last_printed or every_time: self.stream.write(self.get_line(filename, lineno)) self.printed_lines[filename] = lineno @@ -68,6 +71,16 @@ except IndexError: return "" + def report(self, exc): + self.stream.write("Exception was:\n\n" + str(exc.exc) + "\n\n") + self.stream.write("Nodes:\n\n") + for node in exc.nodes: + self.stream.write(repr(node) + "\n") + self.dispatch_only(node.original, every_time=1) + self.stream.write("\nOriginal node was:\n\n" + repr(exc.nodes[0].original) + "\n") + self.stream.write("\nSimplified node was:\n\n") + exc.nodes[0].pprint(stream=self.stream) + # Convenience functions. def view(module, stream=None):