Dealing with AnObsoleteC3 Class

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

Dealing with AnObsoleteC3 Class

Michael Davies-2
I'm trying to refactor a piece of code using the refactoring browser,
but I've started getting messages telling me that AnObsoleteC3 class
does not understand #directlyDefinesMethod.

I assume that a changeset I've loaded has removed a class called C3,
but that there's still some reference to it hanging around. I guess I
need help with two things:
- how do I track this thing down?
- how do I kill it?

I've inspected 'self' from the debugger, and had a poke around some of
the pointer tools, but don't really know what I'm doing. Can anyone
enlighten me?
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

Re: Dealing with AnObsoleteC3 Class

Bert Freudenberg

On Jan 31, 2007, at 20:22 , Michael Davies wrote:

> I'm trying to refactor a piece of code using the refactoring browser,
> but I've started getting messages telling me that AnObsoleteC3 class
> does not understand #directlyDefinesMethod.
>
> I assume that a changeset I've loaded has removed a class called C3,
> but that there's still some reference to it hanging around. I guess I
> need help with two things:
> - how do I track this thing down?
> - how do I kill it?
>
> I've inspected 'self' from the debugger, and had a poke around some of
> the pointer tools, but don't really know what I'm doing. Can anyone
> enlighten me?

http://wiki.squeak.org/squeak/2631

- Bert -


_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

Re: Dealing with AnObsoleteC3 Class

Michael Davies-2
On 31/01/07, Bert Freudenberg <[hidden email]> wrote:

>
> On Jan 31, 2007, at 20:22 , Michael Davies wrote:
>
> > I'm trying to refactor a piece of code using the refactoring browser,
> > but I've started getting messages telling me that AnObsoleteC3 class
> > does not understand #directlyDefinesMethod.
> >
>
> http://wiki.squeak.org/squeak/2631
>
Thanks Bert, that's a very useful reference. I've followed the advice
there, and when I get to bringing up the Pointer Finder it says:

#ProtoObject -> ProtoObject class
subclasses: Array
9: AnObsoleteC3 class

So it looks to me as though ProtoObject is the only thing holding a
reference to this obsolete class. I inspected it and the subclasses
array has 105 members, many of them repeated Obsolete classes:

{Object . ObjectOut . ImageSegmentRootStub . MessageCatcher .
DynamicBindingsInfo . MaMinimalObject . MAConditionBuilder .
MAProxyObject . AnObsoleteC3 . AnObsoleteC4 . AnObsoleteC6 .
AnObsoleteC3 . AnObsoleteC4 . AnObsoleteC6 . AnObsoleteC3 .
AnObsoleteC4 . AnObsoleteC6 . AnObsoleteC3 . AnObsoleteC4 .
AnObsoleteC6 . AnObsoleteC3 . AnObsoleteC4 . AnObsoleteC6 .
...etc... }

I'm not sure that this is the way things should be!

Any pointers for next steps?
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

Re: Dealing with AnObsoleteC3 Class

Bert Freudenberg
On Jan 31, 2007, at 22:32 , Michael Davies wrote:

> On 31/01/07, Bert Freudenberg <[hidden email]> wrote:
>>
>> On Jan 31, 2007, at 20:22 , Michael Davies wrote:
>>
>> > I'm trying to refactor a piece of code using the refactoring  
>> browser,
>> > but I've started getting messages telling me that AnObsoleteC3  
>> class
>> > does not understand #directlyDefinesMethod.
>> >
>>
>> http://wiki.squeak.org/squeak/2631
>>
> Thanks Bert, that's a very useful reference. I've followed the advice
> there, and when I get to bringing up the Pointer Finder it says:
>
> #ProtoObject -> ProtoObject class
> subclasses: Array
> 9: AnObsoleteC3 class
>
> So it looks to me as though ProtoObject is the only thing holding a
> reference to this obsolete class. I inspected it and the subclasses
> array has 105 members, many of them repeated Obsolete classes:
>
> {Object . ObjectOut . ImageSegmentRootStub . MessageCatcher .
> DynamicBindingsInfo . MaMinimalObject . MAConditionBuilder .
> MAProxyObject . AnObsoleteC3 . AnObsoleteC4 . AnObsoleteC6 .
> AnObsoleteC3 . AnObsoleteC4 . AnObsoleteC6 . AnObsoleteC3 .
> AnObsoleteC4 . AnObsoleteC6 . AnObsoleteC3 . AnObsoleteC4 .
> AnObsoleteC6 . AnObsoleteC3 . AnObsoleteC4 . AnObsoleteC6 .
> ...etc... }
>
> I'm not sure that this is the way things should be!
>
> Any pointers for next steps?

No idea. If I had to guess then these look like Magma proxies to me.  
You might get help on the Magma list.

http://lists.squeakfoundation.org/mailman/listinfo/magma

- Bert -


_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

Re: Dealing with AnObsoleteC3 Class

Michael Davies-2
On 31/01/07, Bert Freudenberg <[hidden email]> wrote:
> On Jan 31, 2007, at 22:32 , Michael Davies wrote:
[snip]

> > ProtoObject subclasses looks like this:
> > {Object . ObjectOut . ImageSegmentRootStub . MessageCatcher .
> > DynamicBindingsInfo . MaMinimalObject . MAConditionBuilder .
> > MAProxyObject . AnObsoleteC3 . AnObsoleteC4 . AnObsoleteC6 .
> > AnObsoleteC3 . AnObsoleteC4 . AnObsoleteC6 . AnObsoleteC3 .
> > AnObsoleteC4 . AnObsoleteC6 . AnObsoleteC3 . AnObsoleteC4 .
> > AnObsoleteC6 . AnObsoleteC3 . AnObsoleteC4 . AnObsoleteC6 .
> > ...etc... }
> >
> > I'm not sure that this is the way things should be!
> >
> > Any pointers for next steps?
>
> No idea. If I had to guess then these look like Magma proxies to me.
> You might get help on the Magma list.
>
> http://lists.squeakfoundation.org/mailman/listinfo/magma

Thanks, but I'm not sure that it's Magma causing the problem: I did a
search through references to ProtoObject, and found that
TraitsResource (in Traits-Tests) looks like the guilty party - it has
three methods setUpTrivialRequiresFixture,
setUpTwoLevelRequiresFixture, setUpTranslatingRequiresFixture - these
include lines like (for C3, C4, C6):

        self c3: (self
                                createClassNamed: #C3
                                superclass: ProtoObject
                                uses: { }).
        self c3 superclass: nil.

Sooo, it doesn't look as though getting rid of these classes will
break anything, but I can't see why they're still hanging around!

Can anybody help me take this any further or should I be looking to
the general list?

Thanks,
Michael

(ps Ramon Leon has got an excellent tool for tidying up an image --
see http://onsmalltalk.com/programming/smalltalk/squeak-smalltalk-image-maintenance/
)
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners