I found a way to fix it.
For certain classes and metaclasses, the slotScope is not correct.
That is "aClass superclass layout slotScope == aClass layout slotScope 
parentScope" responds false!!

Here is a dirty fix to find and rebuild these classes and metaclasses. But I 
would like to have a better way to rebuild a class than adding then removing an 
inst var. 
After executing this, you can add an iv to class (beware it takes several 
minutes).

ivName := 'anIVNameImPrettySureNobodyUses'.
all := Smalltalk allClasses flatCollect: [ :e | { e . e class } ].
candidates := all reject: [ :e | e superclass isNil or: [e layout slotScope 
isKindOf: LayoutEmptyScope ] ].
toRebuild := candidates reject: [ :e | e superclass layout slotScope == e 
layout slotScope parentScope ].
toRebuild do: [ :e | e addInstVarNamed: ivName ].
toRebuild do: [ :e | 
    (e isClassSide
        ifTrue: [ (Smalltalk at: e instanceSide name) classSide ]
        ifFalse: [ Smalltalk at: e name ]) removeInstVarNamed: ivName ]


On 25 févr. 2014, at 09:09, Torsten Bergmann <[email protected]> wrote:

> Unfortunately it is not fixed, anyone with knowledge
> of the new class builder able to fix it:
> 
> https://pharo.fogbugz.com/f/cases/11596
> 
> 

Reply via email to