[MCP][Q] Classes referencing their own subclasses

German Morales germanmorales at delta-sys.com
Sun Feb 23 02:07:29 UTC 2003

Hi everybody,

On the Swiki page of the Morph Cleaning Project
(http://minnow.cc.gatech.edu/squeak/3005), Daniel Vainsencher wrote:

"one of the things that makes Morph the hub of a big tangle, is the fact
that it references classes it shouldn't know, for example, alot of it's
own subclasses".

To see how much Morph refereced their own subclasses, I wrote the
following script (enhancements welcome):

Transcript show: 'Classes referenced by their Superclasses'; cr.

Morph allSubclasses do: [:eachClass |
 allCalls _ Smalltalk allCallsOn:
   (Smalltalk associationAt: eachClass theNonMetaClass name).
 allReferencingClasses _ (allCalls collect:
   [:each | Smalltalk classNamed: each classSymbol]
   ) asSet.
 allReferencingSuperclasses _ allReferencingClasses select:
   [:each | eachClass allSuperclasses includes: each].
 allReferencingSuperclasses do:
   [:each | Transcript show: eachClass; show: ' --> '; show: each; cr].

The result is this BIG list:

Classes referenced by their Superclasses
TTSampleStringMorph --> TTSampleFontMorph
ObjectPropertiesMorph --> Morph
StackMorph --> Morph
Viewer --> Morph
LineMorph --> BorderedMorph
LineMorph --> PolygonMorph
StringMorph --> Object
StringMorph --> Morph
BalloonMorph --> Morph
SketchEditorMorph --> Morph
StandardViewer --> Object
StandardViewer --> Morph
SimpleButtonMorph --> Morph
ImageMorph --> Morph
SyntaxMorph --> Morph
MovieClipEndMorph --> MovieClipStartMorph
SystemWindow --> Morph
EToyGateKeeperMorph --> EToyCommunicatorMorph
ListViewLine --> Morph
ColorPickerMorph --> Morph
ScriptEditorMorph --> Morph
TileMorph --> Object
AlignmentMorph --> Morph
HandleMorph --> Morph
HandleMorph --> BorderedMorph
MovieMorph --> Morph
SketchMorph --> Morph
TextPlusPasteUpMorph --> Morph
TrashCanMorph --> Morph
TwoWayScrollPane --> Morph
URLMorph --> Morph
PasteUpMorph --> Morph
ButtonPropertiesMorph --> Morph
CollapsedMorph --> Morph
PhraseTileMorph --> Morph
GraphicalMenu --> Morph
TransformationMorph --> Morph
HandMorph --> Morph
TextPropertiesMorph --> Morph
IconicButton --> Morph
BookMorph --> Morph
MorphThumbnail --> Morph
TextMorph --> Morph
MenuMorph --> Object
MenuMorph --> BorderedMorph
MenuMorph --> Morph
HaloMorph --> Morph
MVCWiWPasteUpMorph --> Object
MVCWiWPasteUpMorph --> Morph

Now the question: Bug or Feature?

Is it OK for a Framework? I'd answer yes in general, but we should go
through the list and analyse each case. As an example, try the same for
Collection instead of Morph: you will get a long list too.

Waiting for comments...


German Morales

More information about the Squeak-dev mailing list