From c5331e7fe773bfb8c74f5e2589963b08453ad890 Mon Sep 17 00:00:00 2001 From: "S.Lott" Date: Mon, 19 May 2025 16:45:44 -0400 Subject: [PATCH] Fix issue #35 Fix an odd degenerate case where empty list literals aren't displayed. --- src/celpy/celparser.py | 2 ++ tests/test_parser.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/celpy/celparser.py b/src/celpy/celparser.py index 020621e..d5c80e0 100644 --- a/src/celpy/celparser.py +++ b/src/celpy/celparser.py @@ -335,6 +335,8 @@ def list_lit(self, tree: lark.Tree) -> None: if self.stack: left = self.stack.pop() self.stack.append(f"[{left}]") + else: + self.stack.append("") def map_lit(self, tree: lark.Tree) -> None: if self.stack: diff --git a/tests/test_parser.py b/tests/test_parser.py index 265a090..63e321c 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -439,6 +439,12 @@ def test_dump_ast(parser): assert DumpAST.display(ast6) == ".min()" +def test_dump_issue_35(): + cel = "[]" + tree = CELParser().parse(cel) + assert DumpAST.display(tree) == "" + + def test_tree_dump(parser): ast = parser.parse("-(3*4+5-1/2%3==1)?name[index]:f(1,2)||false&&true") assert tree_dump(ast) == '- (3 * 4 + 5 - 1 / 2 % 3 == 1) ? name[index] : f(1, 2) || false && true'