[movitz-cvs] CVS update: movitz/losp/muerte/eval.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Fri Oct 22 12:31:35 UTC 2004


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

Modified Files:
	eval.lisp 
Log Message:
Added parse-docstring-declarations-and-body, and made the parsing of
lambda-forms use it, so that e.g.

  (lambda (..) "docstring" (declare ..) ..)

should now work in eval.

Date: Fri Oct 22 14:31:34 2004
Author: ffjeld

Index: movitz/losp/muerte/eval.lisp
diff -u movitz/losp/muerte/eval.lisp:1.12 movitz/losp/muerte/eval.lisp:1.13
--- movitz/losp/muerte/eval.lisp:1.12	Thu Oct 21 22:45:48 2004
+++ movitz/losp/muerte/eval.lisp	Fri Oct 22 14:31:34 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Fri Oct 19 21:15:12 2001
 ;;;;                
-;;;; $Id: eval.lisp,v 1.12 2004/10/21 20:45:48 ffjeld Exp $
+;;;; $Id: eval.lisp,v 1.13 2004/10/22 12:31:34 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -152,6 +152,16 @@
     (dolist (d (cdar p))
       (push d declarations))))
 
+(defun parse-docstring-declarations-and-body (forms)
+  "From the list of FORMS, return first the list of non-declaration forms, ~
+second the list of declaration-specifiers, third any docstring."
+  (if (or (not (cdr forms))
+	  (not (stringp (car forms))))
+      (parse-declarations-and-body forms)
+    (multiple-value-call #'values
+      (parse-declarations-and-body (cdr forms))
+      (car forms))))
+
 (defun declared-special-p (var declarations)
   (dolist (d declarations nil)
     (when (and (consp d)
@@ -315,7 +325,7 @@
 	(symbol-function (lookup-setf-function (second function-name))))
        ((lambda)
 	(let ((lambda-list (cadr function-name))
-	      (lambda-body (cddr function-name)))
+	      (lambda-body (parse-docstring-declarations-and-body (cddr function-name))))
 	  (install-funobj-name :anonymous-lambda
 			       (lambda (&rest args)
 				 (declare (dynamic-extent args))





More information about the Movitz-cvs mailing list