fix(list): handle cyclic reference when stringifying
This commit is contained in:
@@ -14,6 +14,7 @@ if TYPE_CHECKING:
|
|||||||
class PebbleList(metaclass=BuiltinType):
|
class PebbleList(metaclass=BuiltinType):
|
||||||
def __init__(self, items: Optional[list[Any]] = None):
|
def __init__(self, items: Optional[list[Any]] = None):
|
||||||
self.items: list[Any] = items or []
|
self.items: list[Any] = items or []
|
||||||
|
self._stringify_visited: bool = False
|
||||||
|
|
||||||
def get(self, index: Any, bracket: Token):
|
def get(self, index: Any, bracket: Token):
|
||||||
idx: int = Cast.as_int(bracket, index)
|
idx: int = Cast.as_int(bracket, index)
|
||||||
@@ -24,7 +25,12 @@ class PebbleList(metaclass=BuiltinType):
|
|||||||
self.items[idx] = value
|
self.items[idx] = value
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "[" + ", ".join(map(lambda item: StringFormatter.stringify(item, True), self.items)) + "]"
|
if self._stringify_visited:
|
||||||
|
return "[...]"
|
||||||
|
self._stringify_visited = True
|
||||||
|
res: str = "[" + ", ".join(map(lambda item: StringFormatter.stringify(item, True), self.items)) + "]"
|
||||||
|
self._stringify_visited = False
|
||||||
|
return res
|
||||||
|
|
||||||
# Exposed methods
|
# Exposed methods
|
||||||
@exposed(nargs=1)
|
@exposed(nargs=1)
|
||||||
|
|||||||
Reference in New Issue
Block a user