X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fdefstruct.impure.lisp;h=1354ab60174d828c90f7b9250d2f70e5374178bb;hb=f42877dcb11f1db580c76c37ae86541b901ac281;hp=e0ab36ed2dab1d35388d8651681e4fe96656d3dc;hpb=a32cea89ba8f5e8a0726f4182c7b6666646e6d3a;p=sbcl.git diff --git a/tests/defstruct.impure.lisp b/tests/defstruct.impure.lisp index e0ab36e..1354ab6 100644 --- a/tests/defstruct.impure.lisp +++ b/tests/defstruct.impure.lisp @@ -1061,3 +1061,25 @@ redefinition." (type-error (e) (assert (eq 'string (type-error-expected-type e))) (assert (zerop (type-error-datum e)))))) + +(with-test (:name defstruct-copier-typechecks-argument) + (assert (not (raises-error? (copy-person (make-astronaut :name "Neil"))))) + (assert (raises-error? (copy-astronaut (make-person :name "Fred"))))) + +(with-test (:name :bug-528807) + (let ((*evaluator-mode* :compile)) + (handler-bind ((style-warning #'error)) + (eval `(defstruct (bug-528807 (:constructor make-528807 (&aux x))) + (x nil :type fixnum)))))) + +(with-test (:name :bug-520607) + (assert + (raises-error? + (eval '(defstruct (typed-struct (:type list) (:predicate typed-struct-p)) + (a 42 :type fixnum))))) + ;; NIL is ok, though. + (eval '(defstruct (typed-struct (:type list) (:predicate nil)) + (a 42 :type fixnum))) + ;; So's empty. + (eval '(defstruct (typed-struct2 (:type list) (:predicate)) + (a 42 :type fixnum))))