From: Nikodemus S. <de...@us...> - 2010-08-17 12:26:33
|
Update of /cvsroot/sbcl/sbcl/src/compiler In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv25163/src/compiler Modified Files: deftype.lisp Log Message: 1.0.41.50: additional error checking for DEFTYPE &co Based on patch by Roman Marynchak. * Make PARSE-DEFMACRO check that the lambda-list is actually a list. * Define BAD-TYPE as an utility to signal SIMPLE-TYPE-ERRORS, instead of having to write the keyword calls everywhere. * Fixes https://bugs.launchpad.net/sbcl/+bug/576594 Index: deftype.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/deftype.lisp,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- deftype.lisp 15 Jan 2009 09:19:32 -0000 1.12 +++ deftype.lisp 17 Aug 2010 12:26:24 -0000 1.13 @@ -19,11 +19,12 @@ (defun %deftype (name) (setf (classoid-cell-pcl-class (find-classoid-cell name :create t)) nil)) -(def!macro sb!xc:deftype (name lambda-list &body body) +(def!macro sb!xc:deftype (&whole form name lambda-list &body body) #!+sb-doc "Define a new type, with syntax like DEFMACRO." (unless (symbolp name) - (error "type name not a symbol: ~S" name)) + (bad-type name 'symbol "Type name is not a symbol:~% ~S" + form)) (multiple-value-bind (expander-form doc source-location-form) (multiple-value-bind (forms decls doc) (parse-body body) ;; FIXME: We could use CONSTANTP here to deal with slightly more |