X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcondition.impure.lisp;h=b66ed3f76372148db434f2d6a8936e3e98973016;hb=f37fd916aae6ecbb7341c1385c7113608b7816a5;hp=f7ea61a2b917ca40d7fb735834c95ca804798a41;hpb=a8709a851b09f7fd489c5cd7a71bee73f9e1cf9a;p=sbcl.git diff --git a/tests/condition.impure.lisp b/tests/condition.impure.lisp index f7ea61a..b66ed3f 100644 --- a/tests/condition.impure.lisp +++ b/tests/condition.impure.lisp @@ -11,6 +11,8 @@ (cl:in-package :cl-user) +(use-package :test-util) + ;;; Bug from CLOCC. (defpackage :p1 (:use :cl) @@ -37,6 +39,8 @@ (assert (eql (code-msg code) 2)) (assert (eql (%code-msg code) 1))) +(in-package :cl-user) + ;;; Check that initializing the condition class metaobject doesn't create ;;; any instances. Reported by Marco Baringer on sbcl-devel Mon, 05 Jul 2004. (defvar *condition-count* 0) @@ -108,3 +112,26 @@ ;; whether escaped or not (dolist (*print-escape* '(nil t)) (write c :stream (make-string-output-stream))))) + +;;; Reported by Michael Weber: restart computation in :TEST-FUNCTION used to +;;; cause infinite recursion. +(defun restart-test-finds-restarts () + (restart-bind + ((bar (lambda () + (return-from restart-test-finds-restarts 42)) + :test-function + (lambda (condition) + (find-restart 'qux)))) + (when (find-restart 'bar) + (invoke-restart 'bar)))) +(assert (not (restart-test-finds-restarts))) + +(with-test (:name :bug-896379) + (let ((*evaluator-mode* :compile)) + (handler-bind ((style-warning #'error)) + (let ((reader (gensym "READER")) + (name (gensym "FOO-ERROR"))) + (eval `(define-condition ,name (error) + ((slot :initarg :slot :reader ,reader)) + (:report (lambda (c stream) + (format stream "Oops: ~S" (,reader c))))))))))