-258: "TYPE-ERROR when recursive LABELS function is declared INLINE"
- The compiler does emit a helpful
- ; note: couldn't inline expand because expansion calls this
- ; LET-converted local function:
- ; "LABELS COMMON-LISP-USER::C.FROB"
- but still shouldn't fail with a TYPE-ERROR
- The value NIL is not of type SB-C::NODE.
- when compiling
- (cl:in-package :cl-user)
- (declaim (optimize (safety 3) (speed 2) (space 1)))
- (defvar *foo*)
- (defvar *bar*)
- (defun u-b-sra (x r ad0 &optional ad1 &rest ad-list)
- (labels ((c.frob (c0)
- (let ()
- (when *foo*
- (vector-push-extend c0 *bar*))))
- (ad.frob (ad)
- (if *foo*
- (map nil #'ad.frob (the (vector t) *bar*))
- (dolist (b *bar*)
- (c.frob b)))))
- (declare (inline c.frob ad.frob)) ; 'til DYNAMIC-EXTENT
- (ad.frob ad0)))
+ Another poblem is confusing error message "asserted type ARRAY
+ conflicts with derived type (VALUES SIMPLE-VECTOR &OPTIONAL)" during
+ compiling (LAMBDA (V) (VALUES (SVREF V 0) (VECTOR-POP V))).
+
+ The last problem is that when type assertions are converted to type
+ checks, types are represented with type specifiers, so we could lose
+ complex attribute. (Now this is probably not important, because
+ currently checks for complex arrays seem to be performed by
+ callees.)