[armedbear-devel] compiled MACROLET fails to expand in DEFUN/DEFMETHOD forms
Erik Huelsmann
ehuels at gmail.com
Mon Jun 21 20:43:54 UTC 2010
I fixed your example on trunk. Hope that fixes CXML too!
Bye,
Erik.
On Mon, Jun 21, 2010 at 3:07 PM, Mark Evenson <evenson at panix.com> wrote:
> The following form fails to compile correctly:
>
> (macrolet ((output-var (var)
> `(format t "var = ~A~%" ,var)))
> (defun baz (bat)
> (output-var bat)))
>
> When the above form has been compiled and loaded
>
> CL-USER> (baz 3)
>
> errors by complaining.
>
> The function OUTPUT-VAR is undefined.
>
> Interestingly abcl-0.12.0 behaves correctly, but abcl-0.15.0 fails (For
> some reason, I don't currently have abcl-0.{13,14} handy to test).
>
> I distilled this bug down from trying to compile CXML, so this is a
> "real-world" problem. CXML bombs on compiling its "xml/xml-parse.lisp"
> at this point:
>
> …
> (macrolet ((with-context ((validator) &body body)
> `(let ((*ctx* (context ,validator))
> (*validate* t))
> (with-scratch-pads () ;nicht schoen
> , at body))))
> (defmethod sax:start-element ((handler validator) uri lname qname
> attributes)
> uri lname
> (with-context (handler)
> (validate-start-element *ctx* qname)
> (process-attributes *ctx* qname attributes)))
> …
>
> with
>
> Wrong number of arguments for CXML::HANDLER.
> [Condition of type PROGRAM-ERROR]
>
> I assume that my "distilled" version has the same cause, namely that the
> precompiler is not expanding macros properly for function/method
> definitions in top-level MACROLET forms, but I explicitly mention my
> root problem here if the slightly different error turns out to provide a
> clue that I have missed.
>
> --
> "A screaming comes across the sky. It has happened before, but there
> is nothing to compare to it now."
>
> _______________________________________________
> armedbear-devel mailing list
> armedbear-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel
>
More information about the armedbear-devel
mailing list