summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--parser.y2
-rw-r--r--tests/008/repeat.expected3
-rw-r--r--tests/008/repeat.txr6
-rw-r--r--y.tab.c.shipped2
4 files changed, 11 insertions, 2 deletions
diff --git a/parser.y b/parser.y
index 91643693..2a42923c 100644
--- a/parser.y
+++ b/parser.y
@@ -1634,10 +1634,10 @@ static val expand_repeat_rep_args(val args)
}
} else if (exp_pair) {
match_reg_var(arg);
+ ptail = list_collect(ptail, arg);
}
exp_pair = exp_pairs = nil;
- ptail = list_collect(ptail, arg);
}
return out;
diff --git a/tests/008/repeat.expected b/tests/008/repeat.expected
new file mode 100644
index 00000000..495d096a
--- /dev/null
+++ b/tests/008/repeat.expected
@@ -0,0 +1,3 @@
+1 3 a
+2 3 b
+3 3 c
diff --git a/tests/008/repeat.txr b/tests/008/repeat.txr
new file mode 100644
index 00000000..dba54831
--- /dev/null
+++ b/tests/008/repeat.txr
@@ -0,0 +1,6 @@
+@(bind a ("a" "b" "c"))
+@(output)
+@(repeat :counter (i 1) :vars ((x (len a))))
+@i @x @a
+@(end)
+@(end)
diff --git a/y.tab.c.shipped b/y.tab.c.shipped
index 31da32e7..f1377d67 100644
--- a/y.tab.c.shipped
+++ b/y.tab.c.shipped
@@ -7351,10 +7351,10 @@ static val expand_repeat_rep_args(val args)
}
} else if (exp_pair) {
match_reg_var(arg);
+ ptail = list_collect(ptail, arg);
}
exp_pair = exp_pairs = nil;
- ptail = list_collect(ptail, arg);
}
return out;