> On 22 Jan 2015, at 17:20, Aliaksei Syrel <[email protected]> wrote:
> 
> Hi,
> 
> We faced a problem with committing and loading packages with Slots. It seams 
> like when loading a package, compiler first compiles a class that uses custom 
> Slot and only then Slot itself. It leads to an error like 
> MessageNotUnderstood: CustomSlot>>index:, but index: is implemented for sure! 
> I'm using the latest image and vm.
> 

I think the reason why this fails is that it loads the first all classes and 
then the methods. But this just makes another issue prominent:

I want to add a class in-between Slot and InstanceVariableSlot for people to 
subclass in this cas
(AbstractInstanceVariableSlot). 
Because InstanceVariableSlot already needs the byte code level stuff, while 
Slot is the superclass of all Slots, even those that have
no index.

I will do that as the next step.


> How to reproduce:
> 
> 1) Create CustomSlot:
> 
> Slot subclass: #CustomSlot
>    instanceVariableNames: ''
>    classVariableNames: ''
>    category: 'CustomSlot-Test'
> 
> Implement the following methods:
> 
> index
>   ^ index
> 
> index: anIndex
>    index := anIndex
> 
> read: anObject
>    ^ anObject instVarAt: index
> 
> write: aValue to: anObject
>    ^ anObject instVarAt: index put: aValue.
> 
> 2) Add our custom class:
> 
> Object subclass: #CutomClass
>    slots: { #var => CustomSlot }
>    classVariables: {  }
>    category: 'CustomSlot-Test'
> 
> 3) Commit
> 4) Try to load in fresh image
> 5) Face error
> 
> Any suggestions?
> 
> Thanks,
> Alex

Reply via email to