Hello Esteban,

Sorry for the delay. 
All the layout of all these classes is wrong, due to some ancient bug. 
The bug fix has been integrated but all the classes that have been modified in-between may have this problem.
To fix that you have to force the rebuild of these classes (by adding then removing a dummy inst var for ex).
Here is a script that do that:

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 avr. 2014, at 16:53, Esteban A. Maringolo <emaringolo@gmail.com> wrote:

Camille, all the classes in my hiearchy are in the toRebuild collection.

But these others are also included:

AdabasLikePlatform class
AsyncFileReadStream class
CannotAutomaticallyDetermineJoin class
CannotFindSession class
DialogWindowModel class
DolphinDatabaseAccessor class
DuplicatePrimaryKeyException class
ExternalOSProcess class
GlorpDatabaseReadError class
GlorpDatabaseWriteError class
GlorpIllegalCommand class
GlorpInvalidExpressionError class
GlorpInvalidTypeError class
GlorpLinkTableAnywhereDescriptorSystem class
GlorpTransactionFailure class
GlorpWriteFailure class
JQueryClass class
JQueryInstance class
MAMemoryFileModel class
MBAbstractInfoList class
MBLabelInfo class
MBSpecInfo class
MCClassDefinition
MCClassDefinition class
MCClassTraitDefinition
MCClassTraitDefinition class
MCFileTreeFileSystemUtils class
MCMethodDefinition
MCMethodDefinition class
MCMockDefinition
MCMockDefinition class
MCOrganizationDefinition
MCOrganizationDefinition class
MCScriptDefinition
MCScriptDefinition class
MacOSProcessAccessor class
MacProcess class
MySQLPlatform class
OS2OSProcessAccessor class
OS2Process class
ObjectStudioDatabaseAccessor class
OcelotPlatform class
OraclePlatform class
PGAbstractStringResponse class
PGAsciiRow class
PGAuthentication class
PGBackendKeyData class
PGCancelRequest class
PGColumnDescription class
PGCopyInResponse class
PGCopyOutResponse class
PGFunctionCall class
PGFunctionResultResponse class
PGNotificationResponse class
PGPasswordPacket class
PGQuery class
PGReadyForQuery class
PGRowDescription class
PGStartupPacket class
PGTerminate class
PostgreSQLPlatform class
ProfStef class
RBSLDAPAuthenticationProvider class
RBSPostgresAuthenticationProvider class
RBSSuperUserSession class
RBSVoyageAuthenticationProvider class
RiscOSProcess class
RiscOSProcessAccessor class
SQLServerPlatform class
SQLite3Platform class
SpecDebugActionButton class
SqueakDatabaseAccessor class
TextInputFieldModel class
UIThemeVistary class
UIThemeWatery class
UnixProcess class
VADatabaseAccessor class
VWDatabaseAccessor class
ValidationError class
WAAncestryAttributeEditor class
WABufferedResponse class
WACacheAttributeEditor class
WAComboResponse class
WAConfigAttributeEditor class
WAFileAttributeEditor class
WAFileLibrary class
WAFileMetadataLibrary class
WAFilterAttributeEditor class
WAStreamedResponse class
WindowsOSProcessAccessor class
WindowsProcess class
WorldModel class

Regards!


Esteban A. Maringolo


2014-04-25 4:42 GMT-03:00 Camille Teruel <camille.teruel@gmail.com>:

On 25 avr. 2014, at 09:13, Marcus Denker <marcus.denker@inria.fr> wrote:


On 25 Apr 2014, at 04:33, Esteban A. Maringolo <emaringolo@gmail.com> wrote:

I was adding a Class instance variable when I got this, admittedly, funny error.

Any clues of why?

The class has a Trait (which I plan to remove). Maybe that is causing this?

This is this problem:

https://pharo.fogbugz.com/f/cases/13028/Adding-ClassVariables-corrupts-class-hierarchy

No I don't think so, 13028 is the subclass cache problem whereas Esteban's problem seems to be related to wrong slot scope problem.
Esteban, is it the latest image?
Can run this script in your image and tell us the content of toRebuild?

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 ].

Does toRebuild contains your class or one class of its hierarchy?