Monticello: AnObsoleteClass???

"Martin v. Löwis" martin at v.loewis.de
Sat Apr 28 09:25:11 UTC 2007


> Where did that "AnObsolete" part come from, and why isn't my class
> (MCNamespacedStWriter) being used now that I've fixed the DNU? Is this
> something peculiar to Squeak, or is Monticello doing some wacky
> reflection on its own classes?

A class X is renamed to AnObsoleteX when #obsolete is sent to that
class. This happens when removeFromSystem:, removeFromSystem, or
removeFromSystemUnlogged is invoked.

I don't know what caused your problem, but here are a couple of cases
where Monticello-Code removes classes:
- MCClassDefinition>>unload
- MczInstaller>>unloadMonticello

When that happens, the obsolete class is removed from Smalltalk and
added to ObsoleteSubclasses. All instances of the class now are
instances of the obsolete class, and a new class defined with the
same name has no relationship to the obsolete class.

So if you have instances of the obsolete class around, sending messages
will invoke the implementations in the obsolete class, not the current
one.

Again, why MCNamespacedStWriter was removed in the first place, I don't
know.

HTH,
Martin



More information about the Squeak-dev mailing list