From: Christophe R. <cr...@us...> - 2003-02-18 12:55:40
|
Update of /cvsroot/sbcl/sbcl/src/code In directory sc8-pr-cvs1:/tmp/cvs-serv1795/src/code Modified Files: macros.lisp Log Message: 0.7.12.42: A couple of minor fixes for bugs caught by Paul Dietz' test suite. ... adjust source transform for CONSTANTLY to return a side-effect-free function; ... OTHERWISE only introduces an otherwise-clause in TYPECASE if it's the last clause; ... while I'm frobbing TYPECASE, make the style-warning format string such that output is pretty. ... NEWS update Index: macros.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/macros.lisp,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- macros.lisp 9 Dec 2002 11:54:48 -0000 1.29 +++ macros.lisp 18 Feb 2003 12:55:37 -0000 1.30 @@ -197,16 +197,19 @@ (let ((keyform-value (gensym)) (clauses ()) (keys ())) - (dolist (case cases) + (do* ((cases cases (cdr cases)) + (case (car cases) (car cases))) + ((null cases) nil) (unless (list-of-length-at-least-p case 1) (error "~S -- bad clause in ~S" case name)) (destructuring-bind (keyoid &rest forms) case - (cond ((memq keyoid '(t otherwise)) + (cond ((and (memq keyoid '(t otherwise)) + (null (cdr cases))) (if errorp (progn - ;; FIXME: this message could probably do with - ;; some loving pretty-printer format controls. - (style-warn "Treating bare ~A in ~A as introducing a normal-clause, not an otherwise-clause" keyoid name) + (style-warn "~@<Treating bare ~A in ~A as introducing a ~ + normal-clause, not an otherwise-clause~@:>" + keyoid name) (push keyoid keys) (push `((,test ,keyform-value ',keyoid) nil ,@forms) clauses)) |