Hi guys

with ben we changed 

((value isKindOf: Class) and: [ key == value name ])

into 

fillCaches
        "Fill cachedClassNames and cachedNonClassNames. Return an array with 
the calculated values."

        | classNames nonClassNames |
        classNames := OrderedCollection new: self size.
        nonClassNames := OrderedCollection new.
        self keysAndValuesDo: [ :key :value |
                "The key == value name test below addresses two separate issues:
                        1) Obsolete classes, where key = #Foo and value name = 
'AnObsoleteFoo'
                        2) Aliases, i.e., Smalltalk at: #OtherName put: aClass"
                ((value isKindOf: Class) and: [ key == value name ])
                        ifTrue: [ classNames add: key ]
                        ifFalse: [ nonClassNames add: key ] ].
        classNames sort.
        cachedNonClassNames := nonClassNames sort.
        cachedClassNames := classNames.
        ^{ classNames. nonClassNames }

by 
        ((value isKindOf: (self at: #Class)) and: [ key == value name ])

and this is not a good change because it assumes that an environment has a 
class Class
and it jumps over the fix point created by the compiled time binding to Class.

Now we did that because in Hazel we build a new kernel and the new environment 
needs to have its own Class class. 

Now I have the impression that 
        ((value isKindOf: (self environment at: #Class)) and: [ key == value 
name ])

is the solution since HSystemDictionary which should be defined in itself could 
work 

Now if somebody has a better idea, I'm all ears (esepcially sincewe do not have 
a nice object to dispatch on).

stef


Reply via email to