Make some RESTART slots read-only
authorJan Moringen <jmoringe@techfak.uni-bielefeld.de>
Fri, 20 Sep 2013 20:19:30 +0000 (22:19 +0200)
committerChristophe Rhodes <c.rhodes@gold.ac.uk>
Tue, 22 Oct 2013 10:30:20 +0000 (11:30 +0100)
The RESTART slots FUNCTION, REPORT-FUNCTION, INTERACTIVE-FUNCTION and
TEST-FUNCTION are never mutated and can thus be read-only.

src/code/target-error.lisp

index 5e1ad55..e66346a 100644 (file)
 
 (defstruct (restart (:copier nil) (:predicate nil))
   (name (missing-arg) :type symbol :read-only 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))
+  (function (missing-arg) :type function :read-only t)
+  (report-function nil :type (or null function) :read-only t)
+  (interactive-function nil :type (or null function) :read-only t)
+  (test-function (lambda (cond) (declare (ignore cond)) t) :type function :read-only t))
+
 (def!method print-object ((restart restart) stream)
   (if *print-escape*
       (print-unreadable-object (restart stream :type t :identity t)