diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-08-02 20:10:32 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-08-02 20:10:32 -0700 |
commit | a139a461bcc5316c5c0069c3ccc00bdf74d1ee9f (patch) | |
tree | 6aab700c5f67444443345072b7f93f35978669a3 | |
parent | e90eb8e6367457c45c7cb785c5dd96c51ca8f865 (diff) | |
download | txr-a139a461bcc5316c5c0069c3ccc00bdf74d1ee9f.tar.gz txr-a139a461bcc5316c5c0069c3ccc00bdf74d1ee9f.tar.bz2 txr-a139a461bcc5316c5c0069c3ccc00bdf74d1ee9f.zip |
Bugfix: (sys:expr . atom) bad syntax out of parser.
* parser.y (expand_meta): Fix incorrect conversion
of (sys:var x) when x is a non-bindable term
to (sys:expr . x). Should be (sys:expr x). This doesn't have
that much of an impact, I don't think. It prevent certain
degenerate forms from working like @(bind x @"str"). The bad
thing is that this particular one has a silent problem: @"str"
wrongly evaluates to #\s. Neverheless, this doesn't seem worth
the addition of a compat flag test; the odds of someone
depending on @"str" producing #\s in some pattern language
code see vanishingly low.
-rw-r--r-- | parser.y | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -1601,7 +1601,7 @@ val expand_meta(val form, val menv) if (sym == var_s) { val var_x = expand(second(form), menv); if (!bindable(var_x)) - return rlcp(cons(expr_s, var_x), form); + return rlcp(cons(expr_s, cons(var_x, nil)), form); return rlcp(cons(var_s, cons(var_x, nil)), form); } |