diff --git a/src/code/print.lisp b/src/code/print.lisp index 999bc943cb5debdca46d8a4f05d4f7da4b3a68e7..f2a1205db7697da2e7f5c00dec7d14a1b7d52253 100644 --- a/src/code/print.lisp +++ b/src/code/print.lisp @@ -1297,7 +1297,7 @@ (write-char #\. stream))) (defun sub-output-integer (integer stream) - (declare (type (and fixnum unsigned-byte) integer)) + (declare (type (integer 0 #.(- most-negative-fixnum)) integer)) (let ((quotient 0) (remainder 0)) (declare (fixnum quotient remainder)) diff --git a/tests/printer.lisp b/tests/printer.lisp index b511f0bc5a93ddc1c1e0861787760346a725beb0..5c958448a5dcd8d62a765f2339a4820051b9acad 100644 --- a/tests/printer.lisp +++ b/tests/printer.lisp @@ -111,3 +111,5 @@ (assert-equal "Scale factor 6: | 314159.0e-05|" (test-scale 11)) (assert-equal "Scale factor 7: | 3141590.e-06|" (test-scale 12)))) +(define-test sub-output-integer.1 + (assert-prints "-536870912" (princ most-negative-fixnum)))