in :INITIAL-CONTENTS. (lp#523612)
* bug fix: FUNCTION-LAMBDA-EXPRESSION lost declarations from interpreted
functions. (lp#524707)
+ * bug fix: bogus style warnings from certain (SETF SLOT-VALUE) and
+ WITH-SLOTS usages during compilation.
changes in sbcl-1.0.36 relative to sbcl-1.0.35:
* new feature: SB-EXT:TYPEXPAND-1, SB-EXT:TYPEXPAND, and
(setf reader-specializers (mapcar #'find-class reader-specializers))
(setf writer-specializers (mapcar #'find-class writer-specializers))))
+(defmacro quiet-funcall (fun &rest args)
+ ;; Don't give a style-warning about undefined function here.
+ `(funcall (locally (declare (muffle-conditions style-warning))
+ ,fun)
+ ,@args))
+
(defmacro accessor-slot-value (object slot-name &environment env)
(aver (constantp slot-name env))
(let* ((slot-name (constant-form-value slot-name env))
(reader-name (slot-reader-name slot-name)))
`(let ((.ignore. (load-time-value
(ensure-accessor 'reader ',reader-name ',slot-name))))
- (declare (ignore .ignore.))
- (truly-the (values t &optional)
- ;; Don't give a style-warning about undefined function here.
- (funcall (locally (declare (muffle-conditions style-warning))
- #',reader-name)
- ,object)))))
+ (declare (ignore .ignore.))
+ (truly-the (values t &optional)
+ (quiet-funcall #',reader-name ,object)))))
(defmacro accessor-set-slot-value (object slot-name new-value &environment env)
(aver (constantp slot-name env))
(ensure-accessor 'writer ',writer-name ',slot-name)))
(.new-value. ,new-value))
(declare (ignore .ignore.))
- (funcall #',writer-name .new-value. ,object)
+ (quiet-funcall #',writer-name .new-value. ,object)
.new-value.)))
(if bind-object
`(let ,bind-object ,form)
(error "ERROR within EVAL-WHEN."))
EOF
expect_condition_during_compile sb-c:compiler-error $tmpfilename
+
+cat > $tmpfilename <<EOF
+(defun slot-name-incf (s)
+ (with-slots (no-such-slot) s
+ (incf no-such-slot)))
+EOF
+expect_clean_cload $tmpfilename
+
# success
exit $EXIT_TEST_WIN