* Don't patch the &REST into the type when it has * for args.
(frob (- (optional-dispatch-max-args od) min) (length opt) "optional"))
(flet ((frob (x y what)
(unless (eq x y)
+ (break "~S" type)
(note-lossage
"The definition ~:[doesn't have~;has~] ~A, but ~
~A ~:[doesn't~;does~]."
(optional-dispatch-p fun)
(optional-dispatch-keyp fun)
(optional-dispatch-more-entry fun)
- (not (fun-type-rest type)))
+ (not (or (fun-type-rest type)
+ (fun-type-wild-args type))))
(make-fun-type :required (fun-type-required type)
:optional (fun-type-optional type)
:rest *universal-type*
(apply #'sb-sequence:make-sequence-like sequence length keys))
(with-test (:name :bug-458354)
(assert (equalp #((a b) (a b)) (bug-458354 #(1 2) 2 :initial-element '(a b)))))
+
+(with-test (:name :bug-542807)
+ (handler-bind ((style-warning #'error))
+ (eval '(defstruct bug-542807 slot)))
+ (let (conds)
+ (handler-bind ((style-warning (lambda (c)
+ (push c conds))))
+ (eval '(defstruct bug-542807 slot)))
+ (assert (= 1 (length conds)))
+ (assert (typep (car conds) 'sb-kernel::redefinition-with-defun))))
\f
;;;; tests not in the problem domain, but of the consistency of the
;;;; compiler machinery itself
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.36.36"
+"1.0.36.37"