From f155477105e9e683462e198e45ba550c07609b15 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 24 Apr 2018 19:52:49 -0700 Subject: compiler: bug: return miscompiled as abscond. Oops; (return x), equivalent to (return-from nil x), is being miscompiled as if it were (sys:abscond-from nil x). * share/txr/stdlib/compiler.tl (comp-return): When short-circuit-recursing into comp-return-from, put return-from into the operator position, because that function checks for that symbol. --- share/txr/stdlib/compiler.tl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl index 3b04293f..34dc3128 100644 --- a/share/txr/stdlib/compiler.tl +++ b/share/txr/stdlib/compiler.tl @@ -598,7 +598,7 @@ (defmeth compiler comp-return (me oreg env form) (mac-param-bind form (op : value) form - me.(comp-return-from oreg env ^(,op nil ,value)))) + me.(comp-return-from oreg env ^(return-from nil ,value)))) (defmeth compiler comp-handler-bind (me oreg env form) (mac-param-bind form (op func-form ex-syms . body) form -- cgit v1.2.3