can you propose a fix?

On 26 Jan 2014, at 22:56, Martin Dias <[email protected]> wrote:

> 
> 
> 
> On Sun, Jan 26, 2014 at 10:50 PM, Martin Dias <[email protected]> wrote:
> 
> 
> 
> On Sun, Jan 26, 2014 at 4:07 PM, Tudor Girba <[email protected]> wrote:
> I looked more into it, and here is a smaller example:
> Gofer new 
>       smalltalkhubUser: 'Moose' project: 'MooseAlgos';
>       package: 'Moose-Algos-Graph';
>       load
> 
> This one does open the debugger, so the other emergency evaluator issue comes 
> from somewhere else.
> 
> The problem seems to come from a Trait being defined in this package, and 
> loading this trait triggers ClassModifiedClassDefinition which stumbles in 
> 
> ClassModifiedClassDefinition>>isPropagation 
>       "If there is not slot changes, I can assume that there is a propagation 
> (the change is in one of the superclasses)"
>       self oldClassDefinition layout ifNil: [ ^ false ].
>       
>       ^ self newClassDefinition layout instanceVariables = self 
> oldClassDefinition layout instanceVariables
> 
> 
> Despite of the name of ClassModifiedClassDefinition, it is announced also 
> when traits are modified. I don't know if Trait should implement #layout... 
> but it is not.  
> 
> I reproduced using this:
> 
> Trait named: #DDDD.
> Trait 
>       named: #DDDD 
>       uses: {TSortable} 
>       category: 'a'.
> 
> I guess that ClassModifiedClassDefinition is not only being announced when a 
> class changed but also it is being announced when its superclass changed (in 
> the case, "propagated"). So the purpose of #isPropagation is the check that. 
> But I'm not sure this announcement should be done for the subclasses...
> 
> 
> 
> Yes, when a class is redefined, the change is announced for subclasses also. 
> Maybe we shouldn't, no?
> 
> code to reproduce:
> 
> 
> aClass := Object subclass: #A.
> aClass subclass: #B.
> 
> anns := OrderedCollection new.
> SystemAnnouncer uniqueInstance 
>       when: ClassModifiedClassDefinition
>       send: #add:
>       to: anns.
> 
> Object 
>       subclass: #A
>       instanceVariableNames: 'a'.
> 
> anns. --->
> an OrderedCollection(a ClassModifiedClassDefinition a 
> ClassModifiedClassDefinition)
> 
> 
> 
> Martín
> 

Reply via email to