X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fshow.lisp;h=4120a0ec831454a26050521e899358af8e6dfba4;hb=627c66211b93537e90c08b34b387edbd7e301011;hp=67234e085327598f2362bb19a317c5e59969463c;hpb=96b310113978665980a8d65ad5dd83deab05c28b;p=sbcl.git diff --git a/src/code/show.lisp b/src/code/show.lisp index 67234e0..4120a0e 100644 --- a/src/code/show.lisp +++ b/src/code/show.lisp @@ -33,14 +33,30 @@ #!+sb-show (defvar */show* t) (defun cannot-/show (string) + (declare (type simple-string string)) #+sb-xc-host (error "can't /SHOW: ~A" string) ;; We end up in this situation when we execute /SHOW too early in ;; cold init. That happens to me often enough that it's really ;; annoying for it to cause a hard failure -- which at that point is ;; hard to recover from -- instead of just diagnostic output. - #-sb-xc-host (sb!sys:%primitive - print - (concatenate 'string "/can't /SHOW: " string)) + ;; + ;; FIXME: The following is what we'd like to have. However, + ;; including it as is causes compilation of make-host-2 to fail, + ;; with "caught WARNING: defining setf macro for AREF when (SETF + ;; AREF) was previously treated as a function" during compilation of + ;; defsetfs.lisp + ;; + ;; #-sb-xc-host (sb!sys:%primitive print + ;; (concatenate 'simple-string "/can't /SHOW:" string)) + ;; + ;; because the CONCATENATE is transformed to an expression involving + ;; (SETF AREF). Not declaring the argument as a SIMPLE-STRING (or + ;; otherwise inhibiting the transform; e.g. with (SAFETY 3)) would + ;; help, but full calls to CONCATENATE don't work this early in + ;; cold-init, because they now need the full assistance of the type + ;; system. So (KLUDGE): + #-sb-xc-host (sb!sys:%primitive print "/can't /SHOW:") + #-sb-xc-host (sb!sys:%primitive print string) (values)) ;;; Should /SHOW output be suppressed at this point?