refuses to create SIMPLE-FUN objects.
* bug fix: type mismatch when assigning to lexical variables no longer
result in fasl-dumping internal type objects. (lp#890750)
+ * bug fix: type mismatch on (setf aref) and function return values no
+ longer result in fasl-dumping internal type objects.
changes in sbcl-1.0.53 relative to sbcl-1.0.52:
* enhancement: on 64-bit targets, in src/compiler/generic/early-vm.lisp,
`(deftransform ,name ((array index ,@extra))
(let* ((type (lvar-type array))
(element-type (array-type-upgraded-element-type type))
- (declared-type (array-type-declared-element-type type)))
+ (declared-type (type-specifier
+ (array-type-declared-element-type type))))
;; If an element type has been declared, we want to
;; use that information it for type checking (even
;; if the access can't be optimized due to the array
forms))
(forms (if (eq result-type *wild-type*)
forms
- `((the ,result-type (progn ,@forms)))))
+ `((the ,(type-specifier result-type) (progn ,@forms)))))
(*allow-instrumenting* (and (not system-lambda) *allow-instrumenting*))
(res (cond ((or (find-if #'lambda-var-arg-info vars) keyp)
(ir1-convert-hairy-lambda forms vars keyp
EOF
expect_clean_compile $tmpfilename
+cat > $tmpfilename <<EOF
+(in-package :cl-user)
+
+(defun foo ()
+ (declare (muffle-conditions warning))
+ (flet ((foo ()
+ (declare (values fixnum))
+ nil))
+ (foo)))
+EOF
+expect_clean_compile $tmpfilename
+
+cat > $tmpfilename <<EOF
+(in-package :cl-user)
+
+(defun foo (x)
+ (declare (muffle-conditions warning)
+ (type (vector (mod 7) 1) x))
+ (setf (aref x 0) 8)
+ x)
+EOF
+expect_clean_compile $tmpfilename
+
# success
exit $EXIT_TEST_WIN