Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/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 ] - [ - 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 ] ! |
It would be nice if #in: was not used when a temporary variable does the
job. And all those returns from inside the blocks can be avoided by returning what the block would return (see example below if not clear). Levente On Wed, 4 Nov 2020, [hidden email] wrote: > Marcel Taeumel uploaded a new version of System to project The Trunk: > http://source.squeak.org/trunk/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 ] ^[ AuthorName := temporaryAuthorName. 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 ] > ! |
Hi Levente, thanks for the suggestion. I just tried to follow it in System-mt.1188. Best, Marcel
|
Free forum by Nabble | Edit this page |