[Pkg] The Trunk: System-ar.206.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Dec 28 00:41:27 UTC 2009
Andreas Raab uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-ar.206.mcz
==================== Summary ====================
Name: System-ar.206
Author: ar
Time: 28 December 2009, 1:39:55 am
UUID: ae1a4168-4967-0c4b-90cb-d15f8d045a23
Ancestors: System-dtl.205
Preparations for NanoTraits: Make sure traits are treated like superclasses when filing out class categories; Smalltalk>>traitNames uses #isTrait instead of isKindOf: Trait and SystemNavigation>>allBehaviorsDo: delegates to ClassDescription to vector through the current traits implementation.
=============== Diff against System-dtl.205 ===============
Item was changed:
----- Method: SystemDictionary>>traitNames (in category 'class and trait names') -----
traitNames
"Answer a SortedCollection of all traits (not including class-traits) names."
| names |
names := OrderedCollection new.
self do:
[:cl | (cl isInMemory
+ and: [(cl isTrait)
- and: [(cl isKindOf: Trait)
and: [(cl name beginsWith: 'AnObsolete') not]])
ifTrue: [names add: cl name]].
^ names!
Item was changed:
----- Method: SystemNavigation>>allBehaviorsDo: (in category 'query') -----
allBehaviorsDo: aBlock
"Evaluate the argument, aBlock, for each kind of Behavior in the system
(that is, Object and its subclasses and Traits).
ar 7/15/1999: The code below will not enumerate any obsolete or anonymous
behaviors for which the following should be executed:
Smalltalk allObjectsDo:[:obj| obj isBehavior ifTrue:[aBlock value: obj]].
but what follows is way faster than enumerating all objects."
aBlock value: ProtoObject.
ProtoObject allSubclassesDoGently: aBlock. "don't bring in ImageSegments"
"Classes outside the ProtoObject hierarchy"
Class subclassesDo: [:aClass |
(aClass == ProtoObject class
or: [aClass isInMemory not
or: [aClass isMeta not]]) ifFalse:
["Enumerate the non-meta class and its subclasses"
aBlock value: aClass soleInstance.
aClass soleInstance allSubclassesDoGently: aBlock]].
+ ClassDescription allTraitsDo:[:trait | aBlock value: trait].!
- Trait allInstances , ClassTrait allInstances do: [:trait |
- aBlock value: trait]!
Item was changed:
----- Method: ChangeSet class>>doWeFileOut:given:cache: (in category 'fileIn/Out') -----
doWeFileOut: aClass given: aSet cache: cache
| aClassAllSuperclasses aClassSoleInstanceAllSuperclasses |
+ aClassAllSuperclasses := cache at: aClass ifAbsentPut:[
+ aClass allSuperclasses asArray, aClass allTraits.
+ ].
-
- aClassAllSuperclasses := cache at: aClass
- ifAbsent: [cache at: aClass put: aClass allSuperclasses asArray].
(aSet includesAnyOf: aClassAllSuperclasses) ifTrue: [^false].
aClass isMeta ifFalse: [^true].
(aSet includes: aClass soleInstance) ifTrue: [^false].
aClassSoleInstanceAllSuperclasses := cache at: aClass soleInstance
+ ifAbsentPut: [aClass soleInstance allSuperclasses asArray, aClass soleInstance allTraits].
- ifAbsent: [cache at: aClass soleInstance put: aClass soleInstance allSuperclasses asArray].
(aSet includesAnyOf: aClassSoleInstanceAllSuperclasses) ifTrue: [^false].
^true!
More information about the Packages
mailing list