From d3b92ce4a710daa8a718163efffafcd396775905 Mon Sep 17 00:00:00 2001 From: Dag Sverre Seljebotn Date: Fri, 15 Aug 2008 21:26:08 +0200 Subject: [PATCH] Added support for recursive trees to Node.dump() utility --- Cython/Compiler/Nodes.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py index 4717fee8..a9d5786d 100644 --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@ -176,13 +176,18 @@ class Node(object): self._end_pos = pos return pos - def dump(self, level=0, filter_out=("pos",), cutoff=100): + def dump(self, level=0, filter_out=("pos",), cutoff=100, encountered=None): if cutoff == 0: return "<...nesting level cutoff...>" + if encountered is None: + encountered = set() + if id(self) in encountered: + return "<%s (%d) -- already output>" % (self.__class__.__name__, id(self)) + encountered.add(id(self)) def dump_child(x, level): if isinstance(x, Node): - return x.dump(level, filter_out, cutoff-1) + return x.dump(level, filter_out, cutoff-1, encountered) elif isinstance(x, list): return "[%s]" % ", ".join([dump_child(item, level) for item in x]) else: -- 2.26.2