[movitz-cvs] CVS update: movitz/special-operators.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Jul 20 12:40:07 UTC 2004


Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv2886

Modified Files:
	special-operators.lisp 
Log Message:
Improved compiler-macro-call so that it works on setf operators.

Date: Tue Jul 20 05:40:07 2004
Author: ffjeld

Index: movitz/special-operators.lisp
diff -u movitz/special-operators.lisp:1.30 movitz/special-operators.lisp:1.31
--- movitz/special-operators.lisp:1.30	Sat Jul 17 05:17:35 2004
+++ movitz/special-operators.lisp	Tue Jul 20 05:40:07 2004
@@ -8,7 +8,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Fri Nov 24 16:22:59 2000
 ;;;;                
-;;;; $Id: special-operators.lisp,v 1.30 2004/07/17 12:17:35 ffjeld Exp $
+;;;; $Id: special-operators.lisp,v 1.31 2004/07/20 12:40:07 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -1057,11 +1057,14 @@
 (define-special-operator muerte::compiler-macro-call (&all all &form form &env env)
   (destructuring-bind (operator &rest arguments)
       (cdr form)
-    (assert (movitz-compiler-macro-function operator env) ()
-      "There is no compiler-macro ~S." operator)
-    (compiler-call #'compile-compiler-macro-form
-      :forward all
-      :form (cons operator arguments))))
+    (let ((name (if (not (setf-name operator))
+		    operator
+		  (movitz-env-setf-operator-name (setf-name operator)))))
+      (assert (movitz-compiler-macro-function name env) ()
+	"There is no compiler-macro ~S." name)
+      (compiler-call #'compile-compiler-macro-form
+	:forward all
+	:form (cons name arguments)))))
 
 (define-special-operator muerte::do-result-mode-case (&all all &result-mode result-mode &form form)
   (loop for (cases . then-forms) in (cddr form)





More information about the Movitz-cvs mailing list