2 references to class with the same name

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

2 references to class with the same name

Brad Fuller-3
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?

thanks,
brad


--
brad fuller
www.bradfuller.com
+1 (408) 799-6124

Reply | Threaded
Open this post in threaded view
|

Re: 2 references to class with the same name

Bert Freudenberg

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 -




Reply | Threaded
Open this post in threaded view
|

Re: 2 references to class with the same name

Brad Fuller-3
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


--
brad fuller
www.bradfuller.com
+1 (408) 799-6124

Reply | Threaded
Open this post in threaded view
|

RE: 2 references to class with the same name

Gary Chambers-4
In reply to this post by Bert Freudenberg
Me too, a few weeks ago. Very odd to see it for the first time!
Like Brad, only one method different between the two.

> -----Original Message-----
> From: [hidden email]
> [mailto:[hidden email]]On Behalf Of Bert
> Freudenberg
> Sent: 26 February 2007 8:47 PM
> To: The general-purpose Squeak developers list
> Subject: Re: 2 references to class with the same name
>
>
>
> 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 -
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: 2 references to class with the same name

Roel Wuyts
Shooting wildly without having had time to look at it: another  
culprit *could be* the SystemChangeNotification.

  I fixed a number of problems with this a while ago which should be  
in 3.9 (haven't yet checked whether they went into the image  
actually). There was a problem with (obsolete) classes being passed  
as part of a remove-class notification. This is fixed now, but this  
post reminded me about this.

Who knows, maybe the image you are using is a bit older, or the fix  
was not accepted, or there is another bug remaining, or it is  
something else :-) So this post is just to point at another place to  
take into consideration.

Is your changes file very big ? If not you could have a look at what  
you did with these classes (e.g. did you add methods to them ?  
Renamed them? Moved them between packages ? etc. that could give a  
hint...

On 27 Feb 2007, at 27 February/10:43, Gary Chambers wrote:

> Me too, a few weeks ago. Very odd to see it for the first time!
> Like Brad, only one method different between the two.
>
>> -----Original Message-----
>> From: [hidden email]
>> [mailto:[hidden email]]On Behalf Of  
>> Bert
>> Freudenberg
>> Sent: 26 February 2007 8:47 PM
>> To: The general-purpose Squeak developers list
>> Subject: Re: 2 references to class with the same name
>>
>>
>>
>> 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 -
>>
>>
>>
>>
>