X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fsharpm.lisp;h=08665e74474b33cdda032f653e36c49ba22be96c;hb=69d60b456b07a0256f08df0d02484f361ce5737c;hp=820d5f489baa71e99aa375252210b59ed368364d;hpb=13883fd2914c2beaf3634a87b3379735e5f49a29;p=sbcl.git diff --git a/src/code/sharpm.lisp b/src/code/sharpm.lisp index 820d5f4..08665e7 100644 --- a/src/code/sharpm.lisp +++ b/src/code/sharpm.lisp @@ -21,7 +21,12 @@ (defun sharp-left-paren (stream ignore length) (declare (ignore ignore) (special *backquote-count*)) (let* ((list (read-list stream nil)) - (listlength (length list))) + (listlength (handler-case (length list) + (type-error + (error) + (declare (ignore error)) + (%reader-error stream "improper list in #(): ~S" + list))))) (declare (list list) (fixnum listlength)) (cond (*read-suppress* nil) @@ -159,9 +164,12 @@ designator: ~S." slot-name)) (when (not (keywordp slot-name)) - (style-warn "in #S ~S, the use of non-keywords ~ - as slot specifiers is deprecated: ~S." - (car body) slot-name))) + (warn 'structure-initarg-not-keyword + :format-control + "in #S ~S, the use of non-keywords ~ + as slot specifiers is deprecated: ~S." + :format-arguments + (list (car body) slot-name)))) collect (intern (string (car tail)) *keyword-package*) collect (cadr tail))))))) @@ -169,20 +177,20 @@ (defun sharp-B (stream sub-char numarg) (ignore-numarg sub-char numarg) - (sharp-r stream sub-char 2)) + (sharp-R stream sub-char 2)) (defun sharp-C (stream sub-char numarg) (ignore-numarg sub-char numarg) ;; The next thing had better be a list of two numbers. (let ((cnum (read stream t nil t))) - (when *read-suppress* (return-from sharp-c nil)) + (when *read-suppress* (return-from sharp-C nil)) (if (and (listp cnum) (= (length cnum) 2)) (complex (car cnum) (cadr cnum)) (%reader-error stream "illegal complex number format: #C~S" cnum)))) (defun sharp-O (stream sub-char numarg) (ignore-numarg sub-char numarg) - (sharp-r stream sub-char 8)) + (sharp-R stream sub-char 8)) (defun sharp-R (stream sub-char radix) (cond (*read-suppress* @@ -205,7 +213,7 @@ (defun sharp-X (stream sub-char numarg) (ignore-numarg sub-char numarg) - (sharp-r stream sub-char 16)) + (sharp-R stream sub-char 16)) ;;;; reading circular data: the #= and ## readmacros @@ -447,8 +455,8 @@ (set-dispatch-macro-character #\# #\C #'sharp-C) (set-dispatch-macro-character #\# #\c #'sharp-C) (set-dispatch-macro-character #\# #\| #'sharp-vertical-bar) - (set-dispatch-macro-character #\# #\p #'sharp-p) - (set-dispatch-macro-character #\# #\P #'sharp-p) + (set-dispatch-macro-character #\# #\p #'sharp-P) + (set-dispatch-macro-character #\# #\P #'sharp-P) (set-dispatch-macro-character #\# #\) #'sharp-illegal) (set-dispatch-macro-character #\# #\< #'sharp-illegal) (set-dispatch-macro-character #\# #\Space #'sharp-illegal)