X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-error.lisp;h=cb48233810ac1bab0d4ef7c144c722dcff9b3fcf;hb=bb7c5beef3a2c45f0ff99f8038409dc4787aa295;hp=747b54f10ade4c0a5c6843e71d68e3dda9fcd940;hpb=6e64d0c249f53f4d41fd7a75f80dfd10a1c89f06;p=sbcl.git diff --git a/src/code/target-error.lisp b/src/code/target-error.lisp index 747b54f..cb48233 100644 --- a/src/code/target-error.lisp +++ b/src/code/target-error.lisp @@ -23,10 +23,10 @@ (defstruct (restart (:copier nil) (:predicate nil)) (name (missing-arg) :type symbol :read-only t) - function - report-function - interactive-function - (test-fun (lambda (cond) (declare (ignore cond)) t))) + (function (missing-arg) :type function) + (report-function nil :type (or null function)) + (interactive-function nil :type (or null function)) + (test-function (lambda (cond) (declare (ignore cond)) t) :type function)) (def!method print-object ((restart restart) stream) (if *print-escape* (print-unreadable-object (restart stream :type t :identity t) @@ -51,7 +51,8 @@ (when (and (or (not condition) (member restart associated) (not (member restart other))) - (funcall (restart-test-fun restart) condition)) + (funcall (restart-test-function restart) + condition)) (res restart)))) (res)))) @@ -112,10 +113,12 @@ returned. It is an error to supply NIL as a name. If CONDITION is specified and not NIL, then only restarts associated with that condition (or with no condition) will be returned." - (find-if (lambda (x) - (or (eq x name) - (eq (restart-name x) name))) - (compute-restarts condition))) + (let ((restarts (compute-restarts condition))) + (declare (type list restarts)) + (find-if (lambda (x) + (or (eq x name) + (eq (restart-name x) name))) + restarts))) (defun invoke-restart (restart &rest values) #!+sb-doc @@ -206,7 +209,7 @@ :interactive-function result))) (when test - (setq result (list* `#',test :test-fun result))) + (setq result (list* `#',test :test-function result))) (nreverse result))) (parse-keyword-pairs (list keys) (do ((l list (cddr l))