From 73625e0ae9b4fde9c6ff64bd6dc22a1b7797be1a Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 26 Feb 2012 20:58:31 -0800 Subject: Fixing long-time (pre-GIT) bug. The object (nil) was stupidly used to represent empty optional output clauses, distinguishing them from missing clauses. This creates an ambiguity, so that an @(output) block which puts out a single empty line is treated as empty. Present but empty clauses are now represented by t. * match.c (do_output_line): Check for t and bail. (do_output): Check for t instead of (nil) and bail. * parser.y (o_elems_opt2): Nonterminal deleted. (out_clauses_opt): Empty case generates nil. (req_parts_opt): o_elems_opt2 replaced by o_elems_opt. (repeat_rep_helper): Function now keeps track of which clauses were specified. For those that were specified, but empty, it substitutes t. * tests/008/empty-clauses.expected: New file. * tests/008/empty-clauses.txr: New file. --- tests/008/empty-clauses.expected | 6 ++++++ tests/008/empty-clauses.txr | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 tests/008/empty-clauses.expected create mode 100644 tests/008/empty-clauses.txr (limited to 'tests') diff --git a/tests/008/empty-clauses.expected b/tests/008/empty-clauses.expected new file mode 100644 index 00000000..b0cbdaf5 --- /dev/null +++ b/tests/008/empty-clauses.expected @@ -0,0 +1,6 @@ + +b +b +fa +b +b diff --git a/tests/008/empty-clauses.txr b/tests/008/empty-clauses.txr new file mode 100644 index 00000000..486d42a2 --- /dev/null +++ b/tests/008/empty-clauses.txr @@ -0,0 +1,18 @@ +@(bind a ("a" "b")) +@(output) +@(repeat) +@a +@(first) + +@(end) +@(repeat) +@a +@(first) +@(end) +@(repeat) +@a +@(first) +f@a +@(end) +@(rep)@a@(first)@(end) +@(end) -- cgit v1.2.3