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.
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))) KERNEL: :%MAKE- STRUCTURE- INSTANCE- MACRO SB-KERNEL: DEFSTRUCT- DESCRIPTION FOOBAR> '((:SLOT T . 1)) #:DUM971))
(DECLARE (TYPE FIXNUM #:DUM971))
(SB-
#<
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.