X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Flate-format.lisp;h=ee5deb16b0c3d49cc11a1eeb777a204bb6695860;hb=a0a413499415738d23cc40baa44e9c404af54a94;hp=a7d63bd68f823851937f94451dcaae9f5e5935e8;hpb=0f3d47226b4c3f9fcc350e681443534701d56aa4;p=sbcl.git diff --git a/src/code/late-format.lisp b/src/code/late-format.lisp index a7d63bd..ee5deb1 100644 --- a/src/code/late-format.lisp +++ b/src/code/late-format.lisp @@ -222,10 +222,12 @@ (char-code (format-directive-character directive)))) (*default-format-error-offset* (1- (format-directive-end directive)))) + (declare (type (or null function) expander)) (if expander (funcall expander directive more-directives) (error 'format-error - :complaint "unknown directive")))) + :complaint "unknown directive ~@[(character: ~A)~]" + :args (list (char-name (format-directive-character directive))))))) (simple-string (values `(write-string ,directive stream) more-directives)))) @@ -325,7 +327,7 @@ (values (progn ,@body-without-decls) ,directives)))) -(eval-when (:compile-toplevel :load-toplevel :execute) +(eval-when (#-sb-xc :compile-toplevel :load-toplevel :execute) (defun %set-format-directive-expander (char fn) (setf (aref *format-directive-expanders* (char-code (char-upcase char))) fn) @@ -975,7 +977,7 @@ close params string end) (expand-format-logical-block prefix per-line-p insides suffix atsignp)) - (let ((count (apply #'+ (mapcar (lambda (x) (count-if #'illegal-inside-justification-p x)) segments)))) + (let ((count (reduce #'+ (mapcar (lambda (x) (count-if #'illegal-inside-justification-p x)) segments)))) (when (> count 0) ;; ANSI specifies that "an error is signalled" in this ;; situation.