[squeak-dev] The Inbox: Collections-ct.853.mcz

Levente Uzonyi leves at caesar.elte.hu
Mon Sep 23 15:40:30 UTC 2019


On Mon, 23 Sep 2019, Thiede, Christoph wrote:

> 
> This changeset sounds well, thanks for the link. However, am I wrong or does this changeset *not* provide a way to convert a setter back to a getter, as I proposed?

That is correct.
I had a look at #asSimpleGetter and I don't think it should be written as 
you did. Why?
- String >> #numArgs can return -1, which is not handled by the method
- String >> #numArgs is not cheap. Using it twice on one of the most 
common paths (the argument is a simple setter) is a waste. 
- It doesn't handle binary selectors, e.g. #~=

I would write something like this:

 	self precedence
 		caseOf: {
 			[ 1 ] -> [ self numArgs = 0 ifTrue: [ ^self ] ].
 			[ 3 ] -> [ self numArgs = 1 ifTrue: [ ^self allButLast asSymbol ] ] }
 		otherwise: [].
 	self error: 'only simple setters and getters can be converted to simple getters'.


Levente

> 
> 
> Best,
> 
> Christoph
> 
> __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
> Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von Taeumel, Marcel
> Gesendet: Montag, 23. September 2019 11:31:54
> An: Alan Grimes via Squeak-dev
> Betreff: Re: [squeak-dev] The Inbox: Collections-ct.853.mcz  
> I think we should file-in Patrick's change set about that matter instead: http://forum.world.st/The-Trunk-Collections-pre-822-mcz-td5097223.html
> 
> Best,
> Marcel
>
>       Am 22.09.2019 01:52:34 schrieb Levente Uzonyi <leves at caesar.elte.hu>:
>
>       On Sat, 21 Sep 2019, Thiede, Christoph wrote:
>
>       >
>       > By the way, when moving methods from package A to B, does the order of involved commits matter to you?
>
>       The updater should handle that once both versions are in the Trunk, but
>       I'd upload the package with the addition first.
>
>       Levente
>
>       >
>       >_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
>       _
>       > Von: Squeak-dev im Auftrag von commits at source.squeak.org
>       > Gesendet: Samstag, 21. September 2019 19:36:47
>       > An: squeak-dev at lists.squeakfoundation.org
>       > Betreff: [squeak-dev] The Inbox: Collections-ct.853.mcz  
>       > A new version of Collections was added to project The Inbox:
>       > http://source.squeak.org/inbox/Collections-ct.853.mcz
>       >
>       > ==================== Summary ====================
>       >
>       > Name: Collections-ct.853
>       > Author: ct
>       > Time: 21 September 2019, 7:36:40.443935 pm
>       > UUID: 627a4e03-54a2-9245-899e-62e983669d25
>       > Ancestors: Collections-mt.851
>       >
>       > Move #asSimpleSetter from MorphicExtras to Collections (step 2/2) and supplement it by #asSimpleGetter
>       >
>       > Complements MorphicExtras-ct.261
>       >
>       > =============== Diff against Collections-mt.851 ===============
>       >
>       > Item was added:
>       > + ----- Method: Symbol>>asSimpleGetter (in category 'converting') -----
>       > + asSimpleGetter
>       > +
>       > +        self numArgs isZero ifTrue: [^ self].
>       > +        self numArgs > 1 ifTrue: [self error: 'Cannot convert complex selector to getter'].
>       > +        ^ self allButLast asSymbol!
>       >
>       > Item was added:
>       > + ----- Method: Symbol>>asSimpleSetter (in category 'converting') -----
>       > + asSimpleSetter
>       > +        ^ (self, ':') asSymbol!
>       >
>       >
>       >
>       >
> 
> 
>


More information about the Squeak-dev mailing list