(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(FILECREATED "16-May-90 16:27:39" |{DSK}<usr>local>lde>lispcore>sources>ERROR-RUNTIME.;2| 22062  

      |changes| |to:|  (VARS ERROR-RUNTIMECOMS)

      |previous| |date:| " 5-Feb-88 15:54:20" |{DSK}<usr>local>lde>lispcore>sources>ERROR-RUNTIME.;1|
)


; Copyright (c) 1986, 1987, 1988, 1990 by Venue & Xerox Corporation.  All rights reserved.

(PRETTYCOMPRINT ERROR-RUNTIMECOMS)

(RPAQQ ERROR-RUNTIMECOMS
       ((COMS 

(* |;;;| "Internal functions.")

              (FUNCTIONS SI::CONDITION-CASE-ERROR CONDITION-HANDLER CONDITION-REPORTER 
                     %PRINT-CONDITION CONDITIONS::%RESTART-PRINTER 
                     CONDITIONS::%RESTART-DEFAULT-REPORTER REPORT-CONDITION CONDITION-PARENT)
              (VARIABLES *CONDITION-HANDLER-BINDINGS* *PROCEED-CASES*)
              (FUNCTIONS CHECK-TYPE-FAIL ECASE-FAIL ASSERT-FAIL)
              (FUNCTIONS MAKE-INTO-CONDITION RAISE-SIGNAL DEFAULT-HANDLE-CONDITION 
                     DEFAULT-PROCEED-REPORTER CONDITIONS::DEFAULT-RESTART-REPORTER 
                     DEFAULT-PROCEED-TEST TEST-PROCEED-CASE WALK-PROCEED-CASES 
                     SI::INVOKE-ACTUAL-RESTART))
        (COMS 

(* |;;;| "Exported symbols. Anything here that's not in CL should be in XCL.")

              (VARIABLES CONDITIONS:*BREAK-ON-SIGNALS* *BREAK-ON-WARNINGS* XCL:*CURRENT-CONDITION*)
              (FUNCTIONS MAKE-CONDITION SIGNAL CL:ERROR CL:CERROR CL:WARN CL:BREAK 
                     CONDITIONS:INVOKE-DEBUGGER)
              (FUNCTIONS CONDITIONS:FIND-RESTART CONDITIONS:COMPUTE-RESTARTS 
                     CONDITIONS:INVOKE-RESTART CONDITIONS:INVOKE-RESTART-INTERACTIVELY))
        (PROP FILETYPE ERROR-RUNTIME)))



(* |;;;| "Internal functions.")


(CL:DEFUN SI::CONDITION-CASE-ERROR (SI::REAL-SELECTOR SI::POSSIBILITIES)
   (CL:ERROR "Unexpected selector in ~S." 'CONDITION-CASE SI::REAL-SELECTOR SI::POSSIBILITIES))

(DEFMACRO CONDITION-HANDLER (XCL::CONDITION-TYPE)
   `(GETPROP ,XCL::CONDITION-TYPE '%CONDITION-HANDLER))

(DEFMACRO CONDITION-REPORTER (XCL::CONDITION-TYPE)
   `(GETPROP ,XCL::CONDITION-TYPE '%CONDITION-REPORTER))

(CL:DEFUN %PRINT-CONDITION (CONDITION STREAM LEVEL)
   (DECLARE (IGNORE LEVEL))
   (CL:IF *PRINT-ESCAPE*
       (CL:FORMAT STREAM "#<Condition ~S @ ~O,~O>" (CL:TYPE-OF CONDITION)
              (\\HILOC CONDITION)
              (\\LOLOC CONDITION))
       (REPORT-CONDITION CONDITION STREAM)))

(CL:DEFUN CONDITIONS::%RESTART-PRINTER (CONDITIONS:RESTART STREAM CONDITIONS::LEVEL)
   (CL:IF *PRINT-ESCAPE*
       (CL:FUNCALL CL::%DEFAULT-PRINT-FUNCTION CONDITIONS:RESTART STREAM CONDITIONS::LEVEL)
       (LET ((CONDITIONS::REPORTER (OR (CONDITIONS::RESTART-REPORT CONDITIONS:RESTART)
                                       (CONDITIONS::DEFAULT-RESTART-REPORT (CONDITIONS:RESTART-NAME
                                                                            CONDITIONS:RESTART))
                                       (CL:RETURN-FROM CONDITIONS::%RESTART-PRINTER (
                                                                 CONDITIONS::DEFAULT-RESTART-REPORTER
                                                                                     
                                                                                   CONDITIONS:RESTART
                                                                                     STREAM)))))
            (CL:IF (CL:STRINGP CONDITIONS::REPORTER)
                (CL:PRINC CONDITIONS::REPORTER STREAM)
                (CL:FUNCALL CONDITIONS::REPORTER STREAM)))))

(CL:DEFUN CONDITIONS::%RESTART-DEFAULT-REPORTER (CONDITIONS:RESTART STREAM)
   (CL:FUNCALL (CONDITIONS::DEFAULT-RESTART-REPORT (CONDITIONS:RESTART-NAME CONDITIONS:RESTART))
          CONDITIONS:RESTART STREAM))

(CL:DEFUN REPORT-CONDITION (CONDITION STREAM)
   (CL:DO* ((TYPE (CL:TYPE-OF CONDITION)
                  (CONDITION-PARENT TYPE))
            (REPORTER (CONDITION-REPORTER TYPE)
                   (CONDITION-REPORTER TYPE)))
           ((NULL TYPE)
            (CL:BREAK "No report function found for ~S." CONDITION))
       (CL:WHEN REPORTER
           (RETURN (CL:IF (CL:STRINGP REPORTER)
                       (CL:PRINC REPORTER STREAM)
                       (CL:FUNCALL REPORTER CONDITION STREAM))))))

(CL:DEFUN CONDITION-PARENT (TYPE)
   (LET ((PARENT (GETSUPERTYPE TYPE)))
        (CL:IF (EQ PARENT 'CL::STRUCTURE-OBJECT)
            NIL
            PARENT)))

(CL:DEFVAR *CONDITION-HANDLER-BINDINGS* NIL
   "Condition handler binding stack")

(CL:DEFVAR *PROCEED-CASES* NIL
   "Active proceed case stack")

(CL:DEFUN CHECK-TYPE-FAIL (PROCEEDABLE PLACE VALUE DESIRED-TYPE MESSAGE)
   (CONDITIONS:RESTART-CASE (CL:ERROR 'XCL:TYPE-MISMATCH :NAME PLACE :VALUE VALUE :EXPECTED-TYPE 
                                   DESIRED-TYPE :MESSAGE MESSAGE)
          (STORE-VALUE (NEW)
                 :REPORT
                 (LAMBDA (STREAM)
                   (CL:FORMAT STREAM "Change the value of ~A" PLACE))
                 :INTERACTIVE
                 (LAMBDA NIL
                   (CL:FORMAT *QUERY-IO* "Enter a new value to store into ~A: " PLACE)
                   (LIST (CL:EVAL (CL:READ *QUERY-IO*))))
                 :FILTER
                 (LAMBDA NIL
                   (AND PROCEEDABLE (TYPEP XCL:*CURRENT-CONDITION* 'XCL:TYPE-MISMATCH)))
                 NEW)))

(CL:DEFUN ECASE-FAIL (PROCEEDABLE PLACE VALUE SELECTORS)
   (CONDITIONS:RESTART-CASE (CL:IF (EQL PLACE VALUE)
                                (CL:ERROR "~S is ~?." VALUE 
                                   "~#[wrong~;not ~S~;neither ~S nor ~S~:;not~@{~#[~; or~] ~S~^,~}~]"
                                       SELECTORS)
                                (CL:ERROR "The value of ~S, ~S,~&is ~?." PLACE VALUE 
                                   "~#[wrong~;not ~S~;neither ~S nor ~S~:;not~@{~#[~; or~] ~S~^,~}~]"
                                       SELECTORS))
          (STORE-VALUE (V)
                 :FILTER
                 (LAMBDA NIL PROCEEDABLE)
                 :REPORT
                 (LAMBDA (STREAM)
                   (CL:FORMAT STREAM "Change the value of ~A" PLACE))
                 :INTERACTIVE
                 (LAMBDA NIL
                   (CL:FORMAT *QUERY-IO* "Enter a new value to store into ~A: " PLACE)
                   (LIST (CL:EVAL (CL:READ *QUERY-IO*))))
                 V)))

(CL:DEFUN ASSERT-FAIL (STRING &REST ARGS)
   (PROCEED-CASE (CL:ERROR 'XCL:ASSERTION-FAILED :FORMAT-STRING STRING :FORMAT-ARGUMENTS ARGS)
          (CONDITIONS:CONTINUE NIL :REPORT "Re-test assertion")))

(CL:DEFUN MAKE-INTO-CONDITION (DATUM DESIRED-TYPE ARGS)
   (CL:ETYPECASE DATUM
       (CONDITION DATUM)
       (CL:SYMBOL (CL:IF (CL:SUBTYPEP DATUM 'CONDITION)
                      (CL:APPLY 'MAKE-CONDITION DATUM ARGS)
                      (CL:ERROR "~S is not a condition type." DATUM)))
       (STRING (MAKE-CONDITION DESIRED-TYPE :FORMAT-STRING DATUM :FORMAT-ARGUMENTS ARGS))))

(CL:DEFUN RAISE-SIGNAL (CONDITION)
   (CL:WHEN (TYPEP CONDITION CONDITIONS:*BREAK-ON-SIGNALS*)
          (CL:BREAK "Condition ~S is about to be signalled." CONDITION))
   (LET ((*CONDITION-HANDLER-BINDINGS* *CONDITION-HANDLER-BINDINGS*))
        (CL:FLET ((TRY-TO-HANDLE (CONDITION TYPE-SPEC HANDLER)
                         (CL:MACROLET ((WITHOUT-HANDLERS (&BODY BODY)
                                              `(LET (*CONDITION-HANDLER-BINDINGS*)
                                                    ,@BODY)))
                                (CL:WHEN (PROCEED-CASE (WITHOUT-HANDLERS (TYPEP CONDITION TYPE-SPEC))
                                                (PROCEED NIL :REPORT "Skip the bad handler binding" 
                                                       NIL))
                                       (CL:FUNCALL HANDLER CONDITION)))))
               (WHILE *CONDITION-HANDLER-BINDINGS*
                  DO (LET ((BINDING (CL:POP *CONDITION-HANDLER-BINDINGS*)))
                              (IF (EQ (CL:FIRST BINDING)
                                          :MULTIPLE-HANDLER-BINDINGS)
                                  THEN (CL:POP BINDING)
                                        (WHILE BINDING DO (TRY-TO-HANDLE CONDITION
                                                                         (CL:POP BINDING)
                                                                         (CL:POP BINDING)))
                                ELSE (TRY-TO-HANDLE CONDITION (CAR BINDING)
                                                (CDR BINDING)))) FINALLY (
                                                                             DEFAULT-HANDLE-CONDITION
                                                                              CONDITION)))
        CONDITION))

(CL:DEFUN DEFAULT-HANDLE-CONDITION (CONDITION)
   (CL:DO ((TYPE (CL:TYPE-OF CONDITION)
                 (CONDITION-PARENT TYPE)))
          ((NULL TYPE))
       (LET ((HANDLER (CONDITION-HANDLER TYPE)))
            (CL:WHEN HANDLER (CL:FUNCALL HANDLER CONDITION)))))

(CL:DEFUN DEFAULT-PROCEED-REPORTER (PC STREAM)
   (CL:FORMAT STREAM "Proceed-type: ~A" (PROCEED-CASE-NAME PC)))

(CL:DEFUN CONDITIONS::DEFAULT-RESTART-REPORTER (CONDITIONS:RESTART STREAM)
   (CL:FORMAT STREAM "Restart type: ~A" (CONDITIONS:RESTART-NAME CONDITIONS:RESTART)))

(DEFMACRO DEFAULT-PROCEED-TEST (XCL::PROCEED-TYPE)
   `(GETPROP ,XCL::PROCEED-TYPE '%DEFAULT-PROCEED-TEST))

(CL:DEFUN TEST-PROCEED-CASE (PC &AUX FILTER)
   (COND
      ((CL:SETF FILTER (CONDITIONS::RESTART-TEST PC))
       (CL:FUNCALL FILTER))
      ((CONDITIONS:RESTART-NAME PC)
       (CL:IF (CL:SETF FILTER (DEFAULT-PROCEED-TEST (CONDITIONS:RESTART-NAME PC)))
           (CL:FUNCALL FILTER)
           T))
      (T                                                     (* \; 
                                                       "unnamed proceed case with no explicit test")
         T)))

(CL:DEFUN WALK-PROCEED-CASES (PROCEED-CASES PRED)
   (CL:FLET ((CONVERT-PROCEED-CASE (PC BLIP)
                    (CL:IF (NULL (CONDITIONS::RESTART-TAG PC))
                        (LET ((NEW (CONDITIONS::COPY-RESTART PC)))
                             (CL:SETF (CONDITIONS::RESTART-TAG NEW)
                                    BLIP)
                             NEW)
                        PC)))
          (CL:DO ((TAIL PROCEED-CASES (CDR TAIL)))
                 ((NULL TAIL)
                  NIL)
              (CL:MACROLET ((PROCESS-THING (THING BLIP)
                                   `(LET ((PC (CONVERT-PROCEED-CASE ,THING ,BLIP)))
                                         (CL:WHEN (CL:FUNCALL PRED PC)
                                                (CL:RETURN-FROM WALK-PROCEED-CASES PC)))))
                     (LET ((OBJECT (CAR TAIL)))
                          (CL:IF (CL:CONSP OBJECT)
                              (CL:DO ((THINGS OBJECT (CDR THINGS)))
                                     ((NULL THINGS))
                                  (PROCESS-THING (CAR THINGS)
                                         TAIL))
                              (PROCESS-THING OBJECT TAIL)))))))

(CL:DEFUN SI::INVOKE-ACTUAL-RESTART (SI::RESTART SI::ARGUMENTS)
   (COND
      ((NULL (CONDITIONS::RESTART-FUNCTION SI::RESTART))
       (CL:THROW (CONDITIONS::RESTART-TAG SI::RESTART)
              (CONS (CONDITIONS::RESTART-SELECTOR SI::RESTART)
                    SI::ARGUMENTS)))
      ((EQ (CONDITIONS::RESTART-SELECTOR SI::RESTART)
           'SI::COMPLEX-RESTART-MARKER)
       (CL:APPLY (CONDITIONS::RESTART-FUNCTION SI::RESTART)
              SI::ARGUMENTS))
      (T (CL:ERROR "Malformed restart object ~S." SI::RESTART))))



(* |;;;| "Exported symbols. Anything here that's not in CL should be in XCL.")


(CL:DEFVAR CONDITIONS:*BREAK-ON-SIGNALS* NIL)

(CL:DEFVAR *BREAK-ON-WARNINGS* NIL
   "If true, calls to WARN will cause a break as well as logging the warning.")

(CL:DEFVAR XCL:*CURRENT-CONDITION* NIL
   "The condition currently being signalled")

(CL:DEFUN MAKE-CONDITION (TYPE &REST XCL::SLOT-INITIALIZATIONS)
   "Create a condition object of the specified type."
   (CL:APPLY (CL::STRUCTURE-CONSTRUCTOR TYPE)
          XCL::SLOT-INITIALIZATIONS))

(CL:DEFUN SIGNAL (XCL::DATUM &REST XCL::ARGS)
   (LET ((XCL:*CURRENT-CONDITION* (MAKE-INTO-CONDITION XCL::DATUM 'SIMPLE-CONDITION XCL::ARGS)))
        (RAISE-SIGNAL (CL:SETQ *LAST-CONDITION* XCL:*CURRENT-CONDITION*))
        (CL:RETURN-FROM SIGNAL XCL:*CURRENT-CONDITION*)))

(CL:DEFUN CL:ERROR (CL::DATUM &REST CL::ARGS)

   (* |;;| "In Xerox Common Lisp, as with Interlisp, errors may not enter the debugger if they are simple, defined by ENTER-DEBUGGER-P")

   (LET ((XCL:*CURRENT-CONDITION* (MAKE-INTO-CONDITION CL::DATUM 'SIMPLE-ERROR CL::ARGS)))
        (RAISE-SIGNAL (CL:SETQ *LAST-CONDITION* XCL:*CURRENT-CONDITION*))
                                                             (* \; "may just unwind.")
        (RESETLST
            (LET ((PRINTMSG T)
                  (ERRORPOS (FIND-DEBUGGER-ENTRY-FRAME 'CL:ERROR)))
                 (DECLARE (CL:SPECIAL PRINTMSG ERRORPOS))
                 (RESETSAVE NIL (LIST 'RELSTK ERRORPOS))
                 (COND
                    ((NULL (ENTER-DEBUGGER-P HELPDEPTH ERRORPOS XCL:*CURRENT-CONDITION*))

                     (* |;;| " says not to enter debugger")

                     (COND
                        (PRINTMSG                            (* \; 
                                                           "print message if no break is to occur.")
                               (CL:PRINC XCL:*CURRENT-CONDITION* *ERROR-OUTPUT*)))
                     (ERROR!)))
                 (DEBUGGER :CONDITION XCL:*CURRENT-CONDITION* :AT (STKNAME ERRORPOS))))))

(CL:DEFUN CL:CERROR (CL::PROCEED-FORMAT-STRING CL::DATUM &REST CL::ARGUMENTS)
   (LET ((XCL:*CURRENT-CONDITION* (MAKE-INTO-CONDITION CL::DATUM 'SIMPLE-ERROR CL::ARGUMENTS)))
        (PROCEED-CASE (CL:ERROR XCL:*CURRENT-CONDITION*)
               (CONDITIONS:CONTINUE NIL :REPORT (CL:APPLY (FUNCTION CL:FORMAT)
                                                       T CL::PROCEED-FORMAT-STRING CL::ARGUMENTS)
                      (CL:RETURN-FROM CL:CERROR XCL:*CURRENT-CONDITION*)))))

(CL:DEFUN CL:WARN (CL::DATUM &REST CL::ARGUMENTS)
   (LET ((XCL:*CURRENT-CONDITION* (MAKE-INTO-CONDITION CL::DATUM 'SIMPLE-WARNING CL::ARGUMENTS)))
        (CL:UNLESS (TYPEP XCL:*CURRENT-CONDITION* 'WARNING)
            (CL:CERROR "Signal and report the condition anyway" 'XCL:TYPE-MISMATCH :NAME 
                   'CL::CONDITION :VALUE XCL:*CURRENT-CONDITION* :EXPECTED-TYPE 'WARNING))
        (CL:WHEN *BREAK-ON-WARNINGS* (CL:BREAK "Warning: ~A" XCL:*CURRENT-CONDITION*))
        (PROCEED-CASE (PROGN (RAISE-SIGNAL XCL:*CURRENT-CONDITION*)
                             (CL:FORMAT *ERROR-OUTPUT* "~&Warning: ~A~%" XCL:*CURRENT-CONDITION*)
                             NIL)
               (CONDITIONS:MUFFLE-WARNING NIL :REPORT "Don't print the warning" NIL))))

(CL:DEFUN CL:BREAK (&OPTIONAL (CL::FORMAT-STRING "Break.")
                              &REST CL::FORMAT-ARGUMENTS)

   (* |;;| "Want to try and get some indication of which break you're returning from.")

   (PROCEED-CASE (CONDITIONS:INVOKE-DEBUGGER (MAKE-CONDITION 'SIMPLE-CONDITION :FORMAT-STRING 
                                                    CL::FORMAT-STRING :FORMAT-ARGUMENTS 
                                                    CL::FORMAT-ARGUMENTS))
          (CONDITIONS:CONTINUE NIL :REPORT "Return from BREAK" (CL:RETURN-FROM CL:BREAK NIL))))

(CL:DEFUN CONDITIONS:INVOKE-DEBUGGER (CONDITION)

   (* |;;| "always enter debugger, never return ")

   (DEBUGGER :CONDITION CONDITION))

(CL:DEFUN CONDITIONS:FIND-RESTART (CONDITIONS::IDENTIFIER)
   (CL:FLET ((CONDITIONS::SAME-RESTART (CONDITIONS::IDENTIFIER CONDITIONS::PROTOTYPE)))
          (CL:ETYPECASE CONDITIONS::IDENTIFIER
              (NULL (CL:ERROR "~S is an invalid argument to ~S;~%    use ~S instead" NIL 
                           'CONDITIONS:FIND-RESTART 'CONDITIONS:COMPUTE-RESTARTS))
              (CONDITIONS:RESTART (WALK-PROCEED-CASES
                                   *PROCEED-CASES*
                                   #'(CL:LAMBDA (CONDITIONS:RESTART)
                                            (AND (OR (EQ CONDITIONS::IDENTIFIER CONDITIONS:RESTART)
                                                     (AND (CONDITIONS::RESTART-TAG 
                                                                 CONDITIONS::IDENTIFIER)
                                                          (EQ (CONDITIONS:RESTART-NAME 
                                                                     CONDITIONS::IDENTIFIER)
                                                              (CONDITIONS:RESTART-NAME 
                                                                     CONDITIONS:RESTART))
                                                          (EQ (CONDITIONS::RESTART-TAG 
                                                                     CONDITIONS::IDENTIFIER)
                                                              (CONDITIONS::RESTART-TAG 
                                                                     CONDITIONS:RESTART))
                                                          (EQ (CONDITIONS::RESTART-SELECTOR 
                                                                     CONDITIONS::IDENTIFIER)
                                                              (CONDITIONS::RESTART-SELECTOR 
                                                                     CONDITIONS:RESTART))
                                                          (EQ (CONDITIONS::RESTART-TEST 
                                                                     CONDITIONS::IDENTIFIER)
                                                              (CONDITIONS::RESTART-TEST 
                                                                     CONDITIONS:RESTART))
                                                          (EQ (CONDITIONS::RESTART-REPORT 
                                                                     CONDITIONS::IDENTIFIER)
                                                              (CONDITIONS::RESTART-REPORT 
                                                                     CONDITIONS:RESTART))
                                                          (EQ (CONDITIONS::RESTART-INTERACTIVE-FN
                                                               CONDITIONS::IDENTIFIER)
                                                              (CONDITIONS::RESTART-INTERACTIVE-FN
                                                               CONDITIONS:RESTART))
                                                          (EQ (CONDITIONS::RESTART-FUNCTION 
                                                                     CONDITIONS::IDENTIFIER)
                                                              (CONDITIONS::RESTART-FUNCTION 
                                                                     CONDITIONS:RESTART))))
                                                 (TEST-PROCEED-CASE CONDITIONS:RESTART)))))
              (CL:SYMBOL (WALK-PROCEED-CASES *PROCEED-CASES* #'(CL:LAMBDA (CONDITIONS:RESTART)
                                                                      (AND (EQ (
                                                                              CONDITIONS:RESTART-NAME
                                                                                CONDITIONS:RESTART)
                                                                               CONDITIONS::IDENTIFIER
                                                                               )
                                                                           (TEST-PROCEED-CASE 
                                                                                  CONDITIONS:RESTART)
                                                                           )))))))

(CL:DEFUN CONDITIONS:COMPUTE-RESTARTS ()
   (LET ((CONDITIONS::FOUND NIL))
        (WALK-PROCEED-CASES *PROCEED-CASES* #'(CL:LAMBDA (CONDITIONS:RESTART)
                                                     (CL:WHEN (CL:CATCH 'SI::SKIP-PROCEED-CASE
                                                                     (TEST-PROCEED-CASE 
                                                                            CONDITIONS:RESTART))
                                                            (CL:PUSH CONDITIONS:RESTART 
                                                                   CONDITIONS::FOUND))
                                                     NIL))
        (CL:NREVERSE CONDITIONS::FOUND)))

(CL:DEFUN CONDITIONS:INVOKE-RESTART (CONDITIONS:RESTART &REST CONDITIONS::ARGUMENTS)
   (LET ((CONDITIONS::R (CONDITIONS:FIND-RESTART CONDITIONS:RESTART)))
        (CL:IF (NULL CONDITIONS::R)
            (CL:ERROR 'XCL:BAD-PROCEED-CASE :NAME CONDITIONS:RESTART)
            (SI::INVOKE-ACTUAL-RESTART CONDITIONS::R CONDITIONS::ARGUMENTS))))

(CL:DEFUN CONDITIONS:INVOKE-RESTART-INTERACTIVELY (CONDITIONS:RESTART)
   (LET ((CONDITIONS::R (CONDITIONS:FIND-RESTART CONDITIONS:RESTART)))
        (CL:IF (NULL CONDITIONS::R)
            (CL:ERROR 'XCL:BAD-PROCEED-CASE :NAME CONDITIONS:RESTART)
            (LET ((CONDITIONS::I-FN (CONDITIONS::RESTART-INTERACTIVE-FN CONDITIONS:RESTART)))
                 (SI::INVOKE-ACTUAL-RESTART CONDITIONS::R (CL:IF CONDITIONS::I-FN (CL:FUNCALL 
                                                                                     CONDITIONS::I-FN
                                                                                         )))))))

(PUTPROPS ERROR-RUNTIME FILETYPE CL:COMPILE-FILE)
(PUTPROPS ERROR-RUNTIME COPYRIGHT ("Venue & Xerox Corporation" 1986 1987 1988 1990))
(DECLARE\: DONTCOPY
  (FILEMAP (NIL)))
STOP
