Eliot Miranda uploaded a new version of System to project The Trunk: http://source.squeak.org/trunk/System-eem.1242.mcz
==================== Summary ====================
Name: System-eem.1242 Author: eem Time: 9 October 2021, 5:56:44.727952 pm UUID: c64c4476-34da-4974-b440-833417d434a3 Ancestors: System-mt.1241
Make searching for unused class vars single-pass. With the new search for implicit literals multi-pass searches for unused class vars can be rather slow.
Provide a convenience to find all pragma selectors.
=============== Diff against System-mt.1241 ===============
Item was added: + ----- Method: SystemNavigation>>allPragmaSelectors (in category 'query') ----- + allPragmaSelectors + "Answer the set of all pragma selectors." + "self systemNavigation allPragmaSelectors asArray sort" + + | result | + result := Set new. + self allSelectorsAndMethodsDo: + [:behavior :selector :method | + method pragmas do: + [:pragma| + result add: pragma keyword]]. + ^result!
Item was changed: ----- Method: SystemNavigation>>allUnreferencedClassVariablesOf: (in category 'query') ----- allUnreferencedClassVariablesOf: aClass + "Answer a list of the names of all the receiver's unreferenced class vars, + including those defined in superclasses." + | unusedClassVars sequence | + aClass isMeta ifTrue: + [^self allUnreferencedClassVariablesOf: aClass theNonMetaClass]. + unusedClassVars := Set new. + aClass withAllSuperclasses do: + [:class| unusedClassVars addAll: class classPool associations]. + (aClass includesBehavior: SharedPool) + ifTrue: + [self allSelectorsAndMethodsDo: + [:s :m| + m allLiteralsDo: [:l| l isVariableBinding ifTrue: [unusedClassVars remove: l ifAbsent: nil]]]] + ifFalse: + [aClass withAllSuperclasses, (aClass withAllSuperclasses collect: [:class| class class]) do: + [:behavior | + behavior selectorsAndMethodsDo: + [:s :m| + m allLiteralsDo: [:l| l isVariableBinding ifTrue: [unusedClassVars remove: l ifAbsent: nil]]]. + unusedClassVars isEmpty ifTrue: [^OrderedCollection new]]]. + "now compute the order in which to present the unused varables..." + sequence := OrderedCollection new. + aClass withAllSuperclasses reverseDo: + [:aSuperClass | + sequence addAll: (aSuperClass classVarNames select: + [:classVarName| + unusedClassVars includes: (aSuperClass classPool associationAt: classVarName)])]. + ^sequence! - "Answer a list of the names of all the receiver's unreferenced class - vars, including those defined in superclasses" - | aList | - aList := OrderedCollection new. - aClass withAllSuperclasses - reverseDo: [:aSuperClass | aSuperClass classVarNames - do: [:var | (self allCallsOn: (aSuperClass classPool associationAt: var)) isEmpty - ifTrue: [aList add: var]]]. - ^ aList!
packages@lists.squeakfoundation.org