[squeak-dev] The Trunk: Tools-yo.404.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat May 5 12:20:09 UTC 2012
Bert Freudenberg uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-yo.404.mcz
==================== Summary ====================
Name: Tools-yo.404
Author: yo
Time: 4 May 2012, 9:11:23.233 pm
UUID: bfc2fb69-8de6-461f-a5ab-67e55498cb63
Ancestors: Tools-bf.403
Guard the case when there is a reference to obsolete classes. One could imagine to have a pseudo package to show obsolete classes referenced from this package, but guarding againt an error is one step toward it anyway.
=============== Diff against Tools-bf.403 ===============
Item was changed:
----- Method: DependencyBrowser>>computePackageDependencies: (in category 'package deps') -----
computePackageDependencies: pkgName
"Compute the dependencies for the given package"
| pi |
classDeps := Dictionary new.
packageDeps := Dictionary new.
pkgName ifNil:[^self].
pi := PackageOrganizer default packageNamed: pkgName ifAbsent:[^self]. "unloaded"
pi classes do:[:pkgClass|
(classDeps at: (pkgClass superclass ifNil:[ProtoObject]) name
ifAbsentPut:[OrderedCollection new]) add:
(MethodReference class: pkgClass selector: #Definition)].
pi methods do:[:mref| | cm |
cm := mref compiledMethod.
1 to: cm numLiterals do:[:i| | lit |
((lit := cm literalAt: i) isVariableBinding and:[lit value isBehavior]) ifTrue:[
(classDeps at: lit value name ifAbsentPut:[OrderedCollection new])
add: (MethodReference class: cm methodClass selector: cm selector)]]].
classDeps keys do:[:className| | aClass pkg |
aClass := Smalltalk classNamed: className.
+ pkg := aClass ifNil: [nil] ifNotNil: [PackageOrganizer default packageOfClass: aClass ifNone:[nil]].
- pkg := PackageOrganizer default packageOfClass: aClass ifNone:[nil].
pkg ifNil:[
Transcript cr; show: 'WARNING: No package for ', className.
(classDeps removeKey: className) do:[:each| Transcript crtab; show: each].
] ifNotNil:[
(packageDeps at: pkg name ifAbsentPut:[OrderedCollection new]) add: className.
].
].
(packageDeps removeKey: pkgName ifAbsent:[#()]) do:[:each|
classDeps removeKey: each ifAbsent:[].
].!
More information about the Squeak-dev
mailing list
|