summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-08-19 07:01:36 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-08-19 07:01:36 -0700
commit36a61da3883e8baca45a80c703211ae71be4c6ff (patch)
tree7bc01b48e5a04e8b0c126c5d92a6fca70d197e6d /parser.y
parentfb444e43852b08ff6d1fb74339f7bce780931c4f (diff)
downloadtxr-36a61da3883e8baca45a80c703211ae71be4c6ff.tar.gz
txr-36a61da3883e8baca45a80c703211ae71be4c6ff.tar.bz2
txr-36a61da3883e8baca45a80c703211ae71be4c6ff.zip
Fix broken @@@<n>/@@@rest references in quasiliterals.
* parser.y (quasi_meta_helper): When obj is a sys:var, leave it alone; don't add another layer of var. Also, do the same if it is a sys:expr. * tests/012/quasi.tl: Added test case.
Diffstat (limited to 'parser.y')
-rw-r--r--parser.y4
1 files changed, 2 insertions, 2 deletions
diff --git a/parser.y b/parser.y
index 04be6aa7..54cc494b 100644
--- a/parser.y
+++ b/parser.y
@@ -1372,8 +1372,8 @@ static val quasi_meta_helper(val obj)
if (atom(obj))
goto expr;
- if (first(obj) == var_s)
- goto var;
+ if (first(obj) == var_s || first(obj) == expr_s)
+ return obj;
expr:
return rlcp(cons(expr_s, obj), obj);