X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fclos.impure.lisp;h=4184438b5290f7f68a9c89f85658c4658c277c94;hb=de3bfc084239fa962ef001eaa68e5b6f4b9bbf81;hp=1e383cd8740881d9edf25306b3e2e31b47168afd;hpb=e768e8944cce654692468dae63f819ea1aa520a5;p=sbcl.git diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index 1e383cd..4184438 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -1911,4 +1911,32 @@ (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))))) + +(with-test (:name :bug-1001799) + ;; compilation of the defmethod used to cause infinite recursion + (let ((pax (gensym "PAX")) + (pnr (gensym "PNR")) + (sup (gensym "SUP")) + (frob (gensym "FROB")) + (sb-ext:*evaluator-mode* :compile)) + (eval + `(progn + (declaim (optimize (speed 1) (space 1) (safety 3) (debug 3) (compilation-speed 1))) + (defclass ,pax (,sup) + ((,pnr :type (or null ,pnr)))) + (defclass ,pnr (,sup) + ((,pax :type (or null ,pax)))) + (defclass ,sup () + ()) + (defmethod ,frob ((pnr ,pnr)) + (slot-value pnr ',pax)))))) + ;;;; success