On Sep 18, 2009, at 11:05 AM, Tobias C. Rittweiler wrote:
I found an opposited bug; a case where an error about a non-existing tag is signalled even though the tag is active:
(assert (eql :go (prog () (funcall (compile nil (lambda () (go :go)))) (return 42) :go (return :go))))
-T.
For what it's worth, if you enable the interpreter in SBCL, it gives up and punts on this as well. I can't see doing anything sensible with it myself.
This is SBCL 1.0.29, an implementation of ANSI Common Lisp. More information about SBCL is available at http://www.sbcl.org/.
SBCL is free software, provided as is, with absolutely no warranty. It is mostly in the public domain; some portions are provided under BSD-style licenses. See the CREDITS and COPYING files in the distribution for more information. CL-USER(1): sb-ext:*evaluator-mode*
:INTERPRET CL-USER(2): (assert (eql :go (prog () (funcall (compile nil (lambda () (go :go)))) (return 42) :go (return :go))))
debugger invoked on a SB-EVAL::INTERPRETER-ENVIRONMENT-TOO-COMPLEX- ERROR: Lexical environment of #<INTERPRETED-FUNCTION NIL {1002BAEC89}> is too complex to compile. restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT] Exit debugger, returning to top level.
(SB-EVAL:PREPARE-FOR-COMPILE #<INTERPRETED-FUNCTION NIL {1002BAEC89}>) 0]
-- Brian Mastenbrook brian@mastenbrook.net http://brian.mastenbrook.net/