Hello Martin,
I have refined the search a little bit, and we have a new winner with Stephane Ducasse as author in annotations.
��
PSMCMergeMorph>>model: aMerger
������ "Set the model and update the window."
������ |grouped sorted|
������ super model: aMerger.
������ grouped := aMerger operations
������ ������ groupBy: [:o | o targetClassName ifNil: [o shortSummary]]
������ ������ having: [:g | true].
������ sorted := OrderedCollection new.
������ grouped keys asSortedCollection do: [:k |
������ ������ sorted addAll: ((grouped at: k) asSortedCollection: [:a :b | a shortSummary <= b shortSummary])].������ ������
������ self patchMorph model: sorted
This is the code I have used:
| allMethods |
allMethods := SystemNavigation default allMethods.
UIManager default displayProgress: 'Scanning all methods...'
������ from: 1
������ to: allMethods size
������ during: [ : bar | | current |
������ ������ current := 0.
������ ������ allMethods select: [ : each |
������ ������ ������ current := current + 1.��
������ ������ ������ bar value: current.
������ ������ ������ each ast arguments notEmpty and: [
������ ������ ������ (each ast allChildren anySatisfy: #isAssignment) and: [
������ ������ ������ (each ast allChildren anySatisfy: #isBlock) and: [
������ ������ ������ each ast temporaries notEmpty and: [
������ ������ ������ each ast superMessages notEmpty and: [
������ ������ ������ (each ast allChildren anySatisfy: [ : node | node isMessage and: [ node selector isUnary ] ]) and: [
������ ������ ������ (each ast allChildren anySatisfy: [ : node | node isMessage and: [ node selector isBinary ] ]) and: [
������ ������ ������ (each ast allChildren anySatisfy: [ : node | node isBlock and: [ node arguments size = 2] ]) and: [
������ ������ ������ (each ast allChildren anySatisfy: [ : node | node isBlock and: [ node arguments size = 1] ])������
������ ������ ������ ������ ] ] ] ] ] ] ] ] ] ].
Cheers,
Hern��n