X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fclos.impure.lisp;h=4184438b5290f7f68a9c89f85658c4658c277c94;hb=de3bfc084239fa962ef001eaa68e5b6f4b9bbf81;hp=24b24d9432532ad7eb0137aa7d55878dae009832;hpb=b7d70307b86d305c654f0a24f8a416b082f275a7;p=sbcl.git diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index 24b24d9..4184438 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -1920,4 +1920,23 @@ (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