From c656a98d3e33fc6a035224f7e5d596e17a427f6d Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Fri, 12 May 2023 01:22:00 +0200 Subject: [PATCH] nodes: prevent infinite recursion in repr --- compiler/nodes.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/compiler/nodes.py b/compiler/nodes.py index 6fb0be6..941ed9a 100644 --- a/compiler/nodes.py +++ b/compiler/nodes.py @@ -18,6 +18,7 @@ class Node: def __init__(self): self.context: semantic.Context | None = None + self._repr_guard: bool = False @abstractmethod def _values(self) -> list[Node | Any]: @@ -32,11 +33,15 @@ class Node: return loc def __repr__(self): + if self._repr_guard: + return self.__class__.__name__ + self._repr_guard = True vals = self._values() if type(vals) == list: vals = ", ".join(repr(val) for val in vals) else: vals = repr(vals) + self._repr_guard = False return f"{self.__class__.__name__}({vals})" def pprint(self, depth: int | None = None, indent: str = "\t"):