[armedbear-devel] SLOT-VALUE and SLOT-VALUE-USING-CLASS with DEFSTRUCT
William Wadsworth
will.wadsworth.10 at gmail.com
Thu Jun 17 15:04:22 UTC 2010
Hi Eric,
(Apologies for the belated reply, just saw the message today.)
On Mon, Jun 14, 2010 at 9:26 PM, Erik Huelsmann <ehuels at gmail.com> wrote:
> Hi William,
>
> Thanks for your report below!
>
> On Mon, Jun 14, 2010 at 4:09 AM, William Wadsworth
> <will.wadsworth.10 at gmail.com> wrote:
>> Hi.
>>
>> The following transcript demonstrates the problem.
>>
>> --- BEGIN
>> Armed Bear Common Lisp 0.20.0
>> Java 1.6.0_20 Sun Microsystems Inc.
>> Java HotSpot(TM) Client VM
>> Low-level initialization completed in 0.667 seconds.
>> Startup completed in 4.849 seconds.
>> Type ":help" for a list of available commands.
>> CL-USER(1): (defstruct x a b c)
>> X
>> CL-USER(2): (slot-value (make-x :a 10) 'a)
>> #<THREAD "interpreter" {118958E}>: Debugger invoked on condition of
>> type UNDEFINED-FUNCTION
>> The function SLOT-VALUE is undefined.
>
> Well, you seem to have identified an issue here: you're correct our
> MOP isn't fully complete, but it's not *that* bad. The function is
> defined in clos.lisp. However, loading of that file happens on the
> first use of one of the functions inside it. But: there's no trigger
> installed on the function to trigger autoloading.
>
> It seems we need a list of all functions exported from clos.lisp in
> order to fix up the auto-loading triggers. Could you create a list
> like that?
>
I don't know whether I read you clearly, but using the following snippet I
got the (manually flattened) results below it:
(let ((file #P"clos.lisp"))
(with-open-file (in file)
(loop for form = (read in nil nil)
while form
when (and (listp form) (eq (car form) 'cl:export))
nconcing (cdr form))))
CLASS-PRECEDENCE-LIST
CLASS-SLOTS
COMPUTE-APPLICABLE-METHODS
COMPUTE-APPLICABLE-METHODS-USING-CLASSES
SLOT-DEFINITION-ALLOCATION
SLOT-DEFINITION-INITARGS
SLOT-DEFINITION-INITFORM
SLOT-DEFINITION-INITFUNCTION
SLOT-DEFINITION-NAME
(Meanwhile, let me see what I can achieve by modifying
autoloads.lisp and/or AutoLoads.java?)
>
> In order to see if a small commit would help you out, I added this
> form to the beginning of your transcript:
>
> (autoload 'slot-value "clos")
> --> T
>
> Turns out that's not all that's required: the next failure I ran into
> is that the function either the function SLOT-VALUE is missing a
> special case for structures, or SLOT-VALUE-USING-CLASS is missing a
> method for structure classes; the error was "No applicable method"...
>
> Looks like there's no workaround, but maybe there's a quick patch.
> I'll need to look into that a bit more. I thought I'd report you my
> findings first.
>
> Thanks again for reporting and welcome to ABCL!
>
Thanks for the effort you and the rest of the team are putting into it.
>
> Bye,
>
>
> Erik.
>
Martin.
More information about the armedbear-devel
mailing list