diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-08-30 06:31:03 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-08-30 06:31:03 -0700 |
commit | 606bf7b40afc23ebeb4fdedd0981848ee671f9a1 (patch) | |
tree | 13c3792d96fb646f3b27ec841a9877879cac4abc | |
parent | e78a617283db4dc8dfa25c15920d88f69c3d7594 (diff) | |
download | txr-606bf7b40afc23ebeb4fdedd0981848ee671f9a1.tar.gz txr-606bf7b40afc23ebeb4fdedd0981848ee671f9a1.tar.bz2 txr-606bf7b40afc23ebeb4fdedd0981848ee671f9a1.zip |
bugfix: places: handling of lisp1 contexts.
* share/txr/stdlib/place.tl (sys:l1-val): Use the expanded
version of the place in the resulting form, because some
of the operators like sys:lisp1-value will not expand it.
Previously we were getting away with (sys:l1-val @1)
expanding to (sys:lisp1-value @1) because the op expander
would traverse through this blindly and replace @1.
-rw-r--r-- | share/txr/stdlib/place.tl | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/share/txr/stdlib/place.tl b/share/txr/stdlib/place.tl index f8bbd580..2ae0d839 100644 --- a/share/txr/stdlib/place.tl +++ b/share/txr/stdlib/place.tl @@ -49,11 +49,11 @@ (let ((e-expr (macroexpand u-expr e))) (if (and (symbolp e-expr) (not (constantp e-expr))) (caseq (lexical-lisp1-binding e e-expr) - (:fun ^(fun ,u-expr)) - (:var u-expr) + (:fun ^(fun ,e-expr)) + (:var e-expr) (nil (if (boundp e-expr) u-expr - ^(sys:lisp1-value ,u-expr))) + ^(sys:lisp1-value ,e-expr))) (t (sys:eval-err "sys:l1-val: invalid case"))) u-expr))) |