| dct arr |

dct := IdentityDictionary new.

arr := #(
        #valueOfProperty: 
        #valueOfProperty:ifAbsent: 
        #valueOfProperty:ifAbsentPut:
        #setProperty:toValue:
        #hasProperty:
).

Morph withAllSubclasses do: [ :class | 
        class methods do: [ :each |
                each ast allChildren 
                        select: [ :c |  c isMessage and: [ arr includes: c 
selector ] ]
                        thenDo: [ :c | 
                                dct 
                                        at: c selector 
                                        ifPresent: [ :col | col add: c ] 
                                        ifAbsentPut: [ OrderedCollection with: 
c ]
                                ]
                ]
].

dct

------------------

Best regards,
Henrik

-----Original Message-----
From: Pharo-dev [mailto:pharo-dev-boun...@lists.pharo.org] On Behalf Of stepharo
Sent: Thursday, November 3, 2016 8:48 PM
To: Pharo Development List <pharo-dev@lists.pharo.org>
Subject: [Pharo-dev] About setProperty:toValue: vs. valueOfProperty:

I would like to be able to compare the **arguments** passed to

setProperty:toValue:

and

the ones of valueOfProperty:, valueOfProperty:ifAbsent:, 
valueOfProperty:ifAbsentPut:,

and

hasProperty:

I quite sure that we will discover more deadcode in morphic.

Any ideas?



PS: I hope (but I cannot read the code of Bloc because it crashes my vm at 
startup) that Bloc and Brick will not use such patterns.

There are plague and lead to shitty and crappy code.


Stef


Reply via email to