I was quite impressed to see the special arglist support for make-instance. Using SBCL I had to hack it slightly so that it pays attention to user-supplied methods on SHARED-INITIALIZE: the following appears to work, though I don't guarantee it's Correct.
:; cvs diff -u swank.lisp Index: swank.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank.lisp,v retrieving revision 1.375 diff -u -r1.375 swank.lisp --- swank.lisp 28 Mar 2006 20:41:53 -0000 1.375 +++ swank.lisp 16 Apr 2006 22:06:36 -0000 @@ -1792,9 +1792,13 @@ (swank-mop:slot-definition-initargs slot)))) (initialize-instance-keywords (applicable-methods-keywords #'initialize-instance - (list class)))) + (list class))) + (shared-initialize-keywords + (applicable-methods-keywords #'shared-initialize + (list class nil)))) (return-from extra-keywords/make-instance (values (append slot-init-keywords + shared-initialize-keywords initialize-instance-keywords) allow-other-keys-p (list class-name-form)))))))))))
Daniel Barlow dan@telent.net writes:
I was quite impressed to see the special arglist support for make-instance. Using SBCL I had to hack it slightly so that it pays attention to user-supplied methods on SHARED-INITIALIZE: the following appears to work, though I don't guarantee it's Correct.
Thanks. I've merged something which handles shared-initialize (and allocate-instance), gets the &allow-other-keys logic right, and a few other fixes.
Cheers,
Christophe