Steel Bank Common Lisp

Comment 1 for bug 309131

Tobias C. Rittweiler (tcr) wrote :

Fixing this bug will not cope well with DEFSTRUCT.

(defstruct foo (x (sb-int:missing-arg) :type fixnum))

will emit a warning because MAKE-FOO will be defined as follows

  (DEFUN MAKE-FOO (&KEY ((:X #:DUM971) (SB-INT:MISSING-ARG)))
    (DECLARE (TYPE FIXNUM #:DUM971))
    (SB-KERNEL::%MAKE-STRUCTURE-INSTANCE-MACRO
     #<SB-KERNEL:DEFSTRUCT-DESCRIPTION FOOBAR> '((:SLOT T . 1)) #:DUM971))

That kind of initialization-value checking is a useful violation of what CLHS specifies
about DEFSTRUCT. I recall some comment or something which mentions this
issue explicitly, perhaps by WHN, but I can't find it right now.