Need help: obsolete class with no superclass

Ross Boylan RossBoylan at stanfordalumni.org
Tue Jun 25 00:03:56 UTC 2002


At 01:39 PM 6/24/02 -0700, you wrote:
>I am unable to get through the class hierarchy cleanup in update 4855 for 
>3.2 gamma because I have a class with a nil superclass.  The cleanup code 
>can not deal with this.
>
>This is the remnant of a class I created; I'm not sure why it's still 
>around at all.
>
>In particular in ClassBuilder>>cleanupClassHierarchy: informer
>         "Makes the class hierarchy consistent and removes obsolete 
> classes from the SystemDictionary."
>         | classes |
>         Transcript cr; show: 'Start fixing the class hierarchy and 
> cleaning up...'.
>         Smalltalk garbageCollect.
>         classes := Metaclass allInstances.
>         classes keysAndValuesDo: [:index :meta |
>                 informer value:'Fixing  class hierarchy ', (index * 100 
> // classes size) printString,'%'.
>                 "Check classes before metaclasses (because 
> Metaclass>>isObsolete
>                 checks whether the related class is obsolete)"
>                 meta allInstances do: [:each | self 
> cleanupClassHierarchyFor: each].
>                 self cleanupClassHierarchyFor: meta.
>         ].
>         Transcript show: 'DONE'.
>
>It's the single instance of meta (which I think means the regular class) 
>called AnObsoleteTaskTable that is generating the failure within 
>cleanupClassHierarchyFor:.
>
>Can anyone suggest a way to proceed?
>
>Thanks.

I've chased pointers (thanks to Ned Konz's suggestion) and uncovered the 
following additional info:

The class is not in the Smalltalk dictionary.

PointerFinder on: comes up empty on the class.

The class is referenced by CompiledMethods in the change set of one of my 
projects (in a MethodChangeRecord).  The class itself was added and then 
removed.

I have other added and removed classes, but this is the only one with a nil 
superclass.




More information about the Squeak-dev mailing list