summaryrefslogtreecommitdiffstats
path: root/share/txr/stdlib/match.tl
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-02-08 07:06:30 -0800
committerKaz Kylheku <kaz@kylheku.com>2021-02-08 07:06:30 -0800
commitc8d581648431d6df4cc1db9e87a1ad1306aeddb8 (patch)
tree52d1630fe483601db7bce3b8dd9ddcb097974625 /share/txr/stdlib/match.tl
parentde6ced80888ed410aa96729879921b5dc5066a51 (diff)
downloadtxr-c8d581648431d6df4cc1db9e87a1ad1306aeddb8.tar.gz
txr-c8d581648431d6df4cc1db9e87a1ad1306aeddb8.tar.bz2
txr-c8d581648431d6df4cc1db9e87a1ad1306aeddb8.zip
matcher: fix backreferencing in predicate.
* share/txr/stdlib/match.tl (compile-predicate-match): Always allocate res-var as a gensym; do not use resvar. Otherwise we will freshly bind resvar as a local, failing to back-reference. * tests/011/patmatch.tl: Add test cases, the second of which fails before this change.
Diffstat (limited to 'share/txr/stdlib/match.tl')
-rw-r--r--share/txr/stdlib/match.tl2
1 files changed, 1 insertions, 1 deletions
diff --git a/share/txr/stdlib/match.tl b/share/txr/stdlib/match.tl
index 0aea24b2..a1222c5a 100644
--- a/share/txr/stdlib/match.tl
+++ b/share/txr/stdlib/match.tl
@@ -288,7 +288,7 @@
(let ((sym (cadr vm)))
(set args (append (ldiff args vm) sym))
sym))))
- (res-var (if rvar rvar (gensym "res-")))
+ (res-var (gensym "res-"))
(arg-var (if avar avar (gensym "obj-"))))
(unless avar
(set args (append args (list arg-var))))