From: Nikodemus Siivola Date: Tue, 23 Mar 2010 17:52:10 +0000 (+0000) Subject: 1.0.36.37: fix minor regression from 1.0.36.33 X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=736f5ba61a8a87df309df7c51b05f0a27f42df4c;p=sbcl.git 1.0.36.37: fix minor regression from 1.0.36.33 * Don't patch the &REST into the type when it has * for args. --- diff --git a/src/compiler/ctype.lisp b/src/compiler/ctype.lisp index f853997..22ca449 100644 --- a/src/compiler/ctype.lisp +++ b/src/compiler/ctype.lisp @@ -607,6 +607,7 @@ (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~]." @@ -796,7 +797,8 @@ (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* diff --git a/tests/compiler.impure.lisp b/tests/compiler.impure.lisp index 70b7bc7..8f9b132 100644 --- a/tests/compiler.impure.lisp +++ b/tests/compiler.impure.lisp @@ -1183,6 +1183,16 @@ (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)))) ;;;; tests not in the problem domain, but of the consistency of the ;;;; compiler machinery itself diff --git a/version.lisp-expr b/version.lisp-expr index 1a99d4b..2216e11 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; 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"