[armedbear-cvs] r11773 - trunk/abcl/src/org/armedbear/lisp

Erik Huelsmann ehuelsmann at common-lisp.net
Tue Apr 21 17:26:04 UTC 2009


Author: ehuelsmann
Date: Tue Apr 21 13:26:02 2009
New Revision: 11773

Log:
Fix MULTIPLE-VALUE-SETQ and (SETF (VALUES ...) ...) when
setting the value of symbol macros.

Fixes MULTIPLE-VALUE-SETQ.5 and MULTIPLE-VALUE-SETQ.8.


Modified:
   trunk/abcl/src/org/armedbear/lisp/setf.lisp

Modified: trunk/abcl/src/org/armedbear/lisp/setf.lisp
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/setf.lisp	(original)
+++ trunk/abcl/src/org/armedbear/lisp/setf.lisp	Tue Apr 21 13:26:02 2009
@@ -63,9 +63,13 @@
     (resolve (%car form)))
   (let (temp)
     (cond ((symbolp form)
-           (let ((new-var (gensym)))
-             (values nil nil (list new-var)
-                     `(setq ,form ,new-var) form)))
+           (multiple-value-bind (expansion expanded)
+               (macroexpand-1 form environment)
+             (if expanded
+                 (get-setf-expansion expansion environment)
+                 (let ((new-var (gensym)))
+                   (values nil nil (list new-var)
+                           `(setq ,form ,new-var) form)))))
           ((setq temp (get (car form) 'setf-inverse))
            (get-setf-method-inverse form `(,temp) nil))
           ((setq temp (get (car form) 'setf-expander))




More information about the armedbear-cvs mailing list