[movitz-cvs] CVS update: movitz/losp/muerte/basic-macros.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Tue Apr 6 13:39:47 UTC 2004
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv24165
Modified Files:
basic-macros.lisp
Log Message:
Improved parsing in the do and do* compiler-macro, which puked at some
quite legal forms.
Date: Tue Apr 6 09:39:47 2004
Author: ffjeld
Index: movitz/losp/muerte/basic-macros.lisp
diff -u movitz/losp/muerte/basic-macros.lisp:1.5 movitz/losp/muerte/basic-macros.lisp:1.6
--- movitz/losp/muerte/basic-macros.lisp:1.5 Wed Mar 24 19:55:12 2004
+++ movitz/losp/muerte/basic-macros.lisp Tue Apr 6 09:39:47 2004
@@ -9,7 +9,7 @@
;;;; Created at: Wed Nov 8 18:44:57 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: basic-macros.lisp,v 1.5 2004/03/25 00:55:12 ffjeld Exp $
+;;;; $Id: basic-macros.lisp,v 1.6 2004/04/06 13:39:47 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -189,7 +189,12 @@
(define-compiler-macro do (var-specs (end-test-form &rest result-forms) &body declarations-and-body)
(flet ((var-spec-let-spec (var-spec)
- (if (symbolp var-spec) var-spec (subseq var-spec 0 2)))
+ (cond
+ ((symbolp var-spec)
+ var-spec)
+ ((cddr var-spec)
+ (subseq var-spec 0 2))
+ (t var-spec)))
(var-spec-var (var-spec)
(if (symbolp var-spec) var-spec (car var-spec)))
(var-spec-step-form (var-spec)
@@ -220,7 +225,12 @@
(defmacro do* (var-specs (end-test-form &rest result-forms) &body declarations-and-body)
(flet ((var-spec-let-spec (var-spec)
- (if (symbolp var-spec) var-spec (subseq var-spec 0 2)))
+ (cond
+ ((symbolp var-spec)
+ var-spec)
+ ((cddr var-spec)
+ (subseq var-spec 0 2))
+ (t var-spec)))
(var-spec-var (var-spec)
(if (symbolp var-spec) var-spec (car var-spec)))
(var-spec-step-form (var-spec)
More information about the Movitz-cvs
mailing list