X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-defstruct.lisp;h=267e58b2e3f37acf14d002e70b7be0b1242f67a7;hb=15d6e7c9a2c3234f95dfe278046fa2fee1b0c007;hp=4138741cccdf0f97b15b59e18c6f2e884e5d9feb;hpb=f409f90c5e8c4c87ed9fa6efdc0e5c1952d94602;p=sbcl.git diff --git a/src/code/target-defstruct.lisp b/src/code/target-defstruct.lisp index 4138741..267e58b 100644 --- a/src/code/target-defstruct.lisp +++ b/src/code/target-defstruct.lisp @@ -418,6 +418,15 @@ (write-char #\space stream) (write-string "(no LAYOUT-INFO)")) (return-from %default-structure-pretty-print nil)) + ;; the structure type doesn't count as a component for + ;; *PRINT-LEVEL* processing. We can likewise elide the logical + ;; block processing, since all we have to print is the type name. + ;; -- CSR, 2004-10-05 + (when (and dd (null (dd-slots dd))) + (write-string "#S(" stream) + (prin1 name stream) + (write-char #\) stream) + (return-from %default-structure-pretty-print nil)) (pprint-logical-block (stream nil :prefix "#S(" :suffix ")") (prin1 name stream) (let ((remaining-slots (dd-slots dd))) @@ -444,6 +453,11 @@ (let* ((layout (%instance-layout structure)) (name (classoid-name (layout-classoid layout))) (dd (layout-info layout))) + (when (and dd (null (dd-slots dd))) + (write-string "#S(" stream) + (prin1 name stream) + (write-char #\) stream) + (return-from %default-structure-ugly-print nil)) (descend-into (stream) (write-string "#S(" stream) (prin1 name stream)