summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-01-27 22:40:55 -0800
committerKaz Kylheku <kaz@kylheku.com>2021-01-27 22:40:55 -0800
commit7f0e32e530b82a2f1923f63d84516c9153b05d92 (patch)
tree4008f4d632f88e354753873bf756bc0d211cae0d
parent3159aba2cfa4ef26d1bc9791c849ea7c39752606 (diff)
downloadtxr-7f0e32e530b82a2f1923f63d84516c9153b05d92.tar.gz
txr-7f0e32e530b82a2f1923f63d84516c9153b05d92.tar.bz2
txr-7f0e32e530b82a2f1923f63d84516c9153b05d92.zip
matcher: fix broken predicate test.
* share/txr/stdlib/match.tl (compile-predicate-match): Promote condition from test-expr into guard-chain.
-rw-r--r--share/txr/stdlib/match.tl3
1 files changed, 2 insertions, 1 deletions
diff --git a/share/txr/stdlib/match.tl b/share/txr/stdlib/match.tl
index e44e7e64..5d67ef6a 100644
--- a/share/txr/stdlib/match.tl
+++ b/share/txr/stdlib/match.tl
@@ -225,7 +225,8 @@
(or (null sym) (bindable sym)
(compile-error *match-form* "~s is not a symbol" sym))
(let ((var-match (compile-var-match sym obj-var var-list)))
- (set var-match.test-expr ^(and ,var-match.test-expr (,fun ,obj-var)))
+ (push (new match-guard guard-expr ^(and ,var-match.test-expr (,fun ,obj-var)))
+ var-match.guard-chain)
var-match)))
(defun compile-cons-structure (cons-pat obj-var var-list)