(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP")
(FILECREATED "13-Oct-88 13:15:44" {ERIS}<LISPCORE>PATCHES>SOURCES>AR-10899-PATCH.\;1 2126
|changes| |to:| (VARS AR-10899-PATCHCOMS)
(SPECIAL-FORMS CL:RETURN-FROM))
(PRETTYCOMPRINT AR-10899-PATCHCOMS)
(RPAQQ AR-10899-PATCHCOMS (
(* |;;|
"Patch file AR-10899-PATCH. Contains fixes for the AR(s) (10899).")
(ADDVARS (*FEATURES* :AR-10899))
(SPECIAL-FORMS CL:RETURN-FROM)))
(* |;;| "Patch file AR-10899-PATCH. Contains fixes for the AR(s) (10899).")
(ADDTOVAR *FEATURES* :AR-10899)
(DEFINE-SPECIAL-FORM CL:RETURN-FROM (CL::BLOCK-NAME CL::EXPR &ENVIRONMENT CL::ENV)
(LET ((CL::BLIP (AND CL::ENV (CL:GETF (ENVIRONMENT-BLOCKS CL::ENV)
CL::BLOCK-NAME))))
(CL:IF (AND CL::BLOCK-NAME (NULL CL::BLIP))
(CL:ERROR 'ILLEGAL-RETURN :TAG CL::BLOCK-NAME)
(LET ((CL::\\BLK CL::BLOCK-NAME)
(CL::VALS (CL:MULTIPLE-VALUE-LIST (CL:EVAL CL::EXPR CL::ENV))))
(COND
(CL::BLIP (* \;
"This is a CL RETURN-FROM, so do the throw.")
(HANDLER-BIND ((ILLEGAL-THROW #'(CL:LAMBDA (CL::C)
(DECLARE (IGNORE CL::C))
(CL:ERROR 'ILLEGAL-RETURN :TAG
CL::\\BLK))))
(CL:THROW CL::BLIP (CL:VALUES-LIST CL::VALS))))
(T (* \;
"This is an IL RETURN, so return from the closest enclosing \\PROG0.")
(RETVALUES (STKPOS '\\PROG0)
CL::VALS T)))))))
(DECLARE\: DONTCOPY
(FILEMAP (NIL)))
STOP