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

Thiede, Christoph Christoph.Thiede at student.hpi.uni-potsdam.de
Mon Sep 23 16:13:19 UTC 2019


> 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'.

+1, this is a much better implementation :)
________________________________
Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von Levente Uzonyi <leves at caesar.elte.hu>
Gesendet: Montag, 23. September 2019 17:40:30
An: The general-purpose Squeak developers list
Cc: Squeak Dev
Betreff: Re: [squeak-dev] The Inbox: Collections-ct.853.mcz

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!
>       >
>       >
>       >
>       >
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190923/2f8c5f47/attachment.html>


More information about the Squeak-dev mailing list