by ANSI. (lp#894202)
* bug fix: SUBTYPEP tests involving forward-referenced classes no longer
bogusly report NIL, T.
+ * bug fix: bogus style-warnings for DEFMETHOD forms that both declared some
+ required arguments ignored and performed assignments to others.
+ (lp#898331)
changes in sbcl-1.0.54 relative to sbcl-1.0.53:
* minor incompatible changes:
applyp))
&body body
&environment env)
- (let* ((all-params (append args (when rest-arg (list rest-arg))))
- (rebindings (when (or setq-p call-next-method-p)
- (mapcar (lambda (x) (list x x)) all-params))))
+ (let* ((rebindings (when (or setq-p call-next-method-p)
+ (mapcar (lambda (x) (list x x)) parameters-setqd))))
(if (not (or call-next-method-p setq-p closurep next-method-p-p applyp))
`(locally
,@body)
(declare (optimize (sb-c:insert-step-conditions 0)))
(not (null ,next-method-call))))))
(let ,rebindings
- ,@(when rebindings `((declare (ignorable ,@all-params))))
,@body)))))
;;; CMUCL comment (Gerd Moellmann):
;; args when a next-method is involved, to
;; prevent compiler warnings about ignored
;; args being read.
- (unless (and (eq 'ignore name) (member var req-args :test #'eq) (or cnm-p (member var parameters-setqd)))
+ (unless (and (eq 'ignore name)
+ (member var req-args :test #'eq)
+ (or cnm-p (member var parameters-setqd)))
(push var outers))
(push var inners)))
(when outers
(warning ()
:good)))))
+(with-test (:name :bug-898331)
+ (handler-bind ((warning #'error))
+ (eval `(defgeneric bug-898331 (request type remaining-segment-requests all-requests)))
+ (eval `(defmethod bug-898331 ((request cons) (type (eql :cancel))
+ remaining-segment-requests
+ all-segment-requests)
+ (declare (ignore all-segment-requests))
+ (check-type request t)))))
+
;;;; success