On Tue, Jan 25, 2011 at 10:37 PM, Matthew Mondor <mm_lists@pulsar-zone.net> wrote:
I can indeed see the error type symbol in the cl_[c]error() calls, that
clears up things a lot, thanks!  The remaining unclear part to me is
FEerror() which seems to invoke universal_error_handler() and from
there I get lost as to how the condition object is created.

universal-error-handler is the function which is reponsible for creating and signaling conditions. It is defined in src/clos/conditions.lsp with the following signature

(defun sys::universal-error-handler (continue-string datum args)

As you see, it is basically a CERROR on steroids. The CONTINUE-STRING argument allows for three ways of signalling error:
* T for CERROR with the usual restart IGNORE
* NIL for ERROR with no restarts and an opened debugger
* A string for a CERROR with a CONTINUE restart. The string is the message.
* A symbol for a named restart around a CERROR.


Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)