[squeak-dev] The Inbox: System-ct.1133.mcz
Levente Uzonyi
leves at caesar.elte.hu
Tue Feb 4 12:33:12 UTC 2020
Hi Christoph,
On Mon, 3 Feb 2020, commits at source.squeak.org wrote:
> Christoph Thiede uploaded a new version of System to project The Inbox:
> http://source.squeak.org/inbox/System-ct.1133.mcz
>
> ==================== Summary ====================
>
> Name: System-ct.1133
> Author: ct
> Time: 3 February 2020, 11:55:06.856675 pm
> UUID: bd5c789a-39d3-574b-aa2a-0f900b3a8009
> Ancestors: System-cmm.1131
>
> Fix execution-around pattern to forward return value in some during methods
>
> So that
> Utilities useAuthorName: 'Squeak' during: [Utilities authorName]
> yields
> 'Squeak'
> but not
> Utilities.
>
> =============== Diff against System-cmm.1131 ===============
>
> Item was changed:
> ----- Method: Preferences class>>setFlag:toValue:during: (in category 'get/set - flags') -----
> setFlag: prefSymbol toValue: aBoolean during: aBlock
> "Set the flag to the given value for the duration of aBlock"
>
> (self valueOfFlag: prefSymbol) in: [:previous |
> self setFlag: prefSymbol toValue: aBoolean.
> + ^ aBlock ensure: [self setFlag: prefSymbol toValue: previous]].!
> - aBlock ensure: [self setFlag: prefSymbol toValue: previous]].!
>
> Item was changed:
> ----- Method: Preferences class>>setPreference:toValue:during: (in category 'get/set') -----
> setPreference: prefSymbol toValue: anObject during: aBlock
>
> (self valueOfPreference: prefSymbol) in: [:previous |
> self setPreference: prefSymbol toValue: anObject.
> + ^ aBlock ensure: [self setPreference: prefSymbol toValue: previous]]!
> - aBlock ensure: [self setPreference: prefSymbol toValue: previous]].!
>
> Item was changed:
> ----- Method: Utilities class>>useAuthorInitials:during: (in category 'identification') -----
> useAuthorInitials: temporaryAuthorInitials during: aBlock
>
> | originalAuthorInitials |
> originalAuthorInitials := AuthorInitials.
> + [ AuthorInitials := temporaryAuthorInitials.
> + ^ aBlock value ]
Returning from inside a block has some extra costs. You can achieve the
same thing without the overhead by returning what #ensure: returns:
^[ AuthorInitials := temporaryAuthorInitials.
aBlock value ]
Levente
> + [ AuthorInitials := temporaryAuthorInitials.
> + ^ aBlock value ]
> - [
> - AuthorInitials := temporaryAuthorInitials.
> - aBlock value ]
> ensure: [ AuthorInitials := originalAuthorInitials ]
> !
>
> Item was changed:
> ----- Method: Utilities class>>useAuthorName:during: (in category 'identification') -----
> useAuthorName: temporaryAuthorName during: aBlock
>
> | originalAuthorName |
> originalAuthorName := AuthorName.
> + [ AuthorName := temporaryAuthorName.
> + ^ aBlock value ]
> - [
> - AuthorName := temporaryAuthorName.
> - aBlock value ]
> ensure: [ AuthorName := originalAuthorName ]
> !
More information about the Squeak-dev
mailing list
|