2 references to class with the same name

Bert Freudenberg bert at freudenbergs.de
Mon Feb 26 20:47:25 UTC 2007


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]

Hmm, has anybody else seen this?

- Bert -






More information about the Squeak-dev mailing list