Craig Lanning <[EMAIL PROTECTED]> writes:
> Thanks for the patch, but it doesn't compile.
>
> Craig
>
> > (I think it would be necessary to recompile at least some of the
> > sources to see if it has an effect.)
> >
> > (in-package :pcl)
> >
> > (defmacro simple-lexical-method-functions
> > ((lambda-list method-args next-methods &rest lmf-options)
> > &body body)
> > `(let ((,method-args ,method-args)
> > (,next-methods ,next-methods))
> ^^^^^^^^^^^^^^
> The variable list for the let looks suspicious to me.
It looks odd, but I think it expands correctly. The two macro
arguments in the LET are names of lambda variables, .METHOD-ARGS. and
.NEXT-METHODS. to be precise, so this expands to something like
(let ((.next-methods. .next-methods.)
(.method-args. .method-args.))
(declare (ignorable .next-methods. .method-args.))
...)
I'm afraid the only way that I can currently cover that path through
the code is with something like
(defclass foo () ())
(defmethod initialize-instance :after ((x foo) &rest args)
(declare (ignore args))
(print "after"))
(defun make-one ()
(make-instance 'foo))
where the optimized MAKE-INSTANCE in MAKE-ONE constructs a method
lambda for the INITIALIZE-INSTANCE method using the above macro. That
compiles and works without a hitch here, with the patch compiled in.
Could you please tell me more about errors you are seeing?