[movitz-cvs] CVS update: movitz/losp/muerte/basic-macros.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Fri Nov 12 14:52:09 UTC 2004
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv9560
Modified Files:
basic-macros.lisp
Log Message:
Changed exact-throw, the basic operator for dynamic control transfer,
quite a bit. The (ill-specified) primitive-function
dynamic-locate-catch-tag is removed, its essential job is now
performed by the normal function find-catch-tag.
Date: Fri Nov 12 15:52:08 2004
Author: ffjeld
Index: movitz/losp/muerte/basic-macros.lisp
diff -u movitz/losp/muerte/basic-macros.lisp:1.44 movitz/losp/muerte/basic-macros.lisp:1.45
--- movitz/losp/muerte/basic-macros.lisp:1.44 Thu Nov 11 20:24:52 2004
+++ movitz/losp/muerte/basic-macros.lisp Fri Nov 12 15:52:05 2004
@@ -9,7 +9,7 @@
;;;; Created at: Wed Nov 8 18:44:57 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: basic-macros.lisp,v 1.44 2004/11/11 19:24:52 ffjeld Exp $
+;;;; $Id: basic-macros.lisp,v 1.45 2004/11/12 14:52:05 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -116,7 +116,11 @@
`(compiled-cond (,test-form ,then-form))))
(defmacro throw (tag result-form)
- `(exact-throw ,tag 0 ,result-form))
+ (let ((tag-var (gensym "throw-tag-")))
+ `(let ((,tag-var ,tag))
+ (exact-throw (find-catch-tag ,tag-var)
+ ,result-form
+ (error 'throw-error :tag ,tag-var)))))
(defmacro when (test-form &rest forms)
`(cond (,test-form , at forms)))
More information about the Movitz-cvs
mailing list