Bert Freudenberg wrote:
On Feb 26, 2007, at 20:46 , Brad Fuller wrote:
I searched for the answer to this, but mostly found how to deal with instances and obsolete classes. Somehow, I ended up with 2 two classes with the same name, and the class is not obsolete.
If I look at the hierarchy of it's (their) superclass (PRStructuresWidget) there are two classes shown:
PRSearchWidget #('searchText' 'items') PRSearchWidget #('searchText')
PRSearchWidget #('searchText' 'items') is the current "real" class. Somehow PRSearchWidget #('searchText') got in there, which I don't want. I don't know how to get rid of it. Anyone point me to the right documentation on this? Maybe if I file out the current one, then remove the class?
Funny you should mention this. I saw the same thing in about three images lately. I have no idea where it comes from. My hunch is Monticello, but I have no evidence to back this up.
In all cases I found that one or even two older version of a class were still in the subclasses list of its superclass. That is, in the browser you could see several subclasses with the same name. Only one of these is the "real" one which is also registered in Smalltalk.
I do not hava a bad image now, but to find these, the following should work:
bad := OrderedCollection new. Smalltalk allClassesDo: [:ea | bad addAll: (ea subclasses reject: [:cls | cls isMeta or: [cls == (Smalltalk at: cls name)]])]. bad
To remove them, try this:
bad do: [:cls | cls superclass removeSubclass: cls]
Thanks Bert, that did the trick.
Much obliged, brad