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

commits at source.squeak.org commits at source.squeak.org
Mon Dec 7 17:46:23 UTC 2020


A new version of Collections was added to project The Inbox:
http://source.squeak.org/inbox/Collections-ct.922.mcz

==================== Summary ====================

Name: Collections-ct.922
Author: ct
Time: 7 December 2020, 6:46:19.160326 pm
UUID: 633c2dcc-4586-e443-bf03-02ae9ae42ee6
Ancestors: Collections-mt.919

Proposal: Implements #add:put:during: as execution around method on Dictionary. This logic is not absolutely trivial, so I would not like to reimplement it again every time I need to build an execution around setter.

=============== Diff against Collections-mt.919 ===============

Item was added:
+ ----- Method: Dictionary>>at:put:during: (in category 'accessing') -----
+ at: key put: anObject during: aBlock
+ 
+ 	| revertBlock assoc |
+ 	revertBlock := self
+ 		at: key
+ 		ifPresent: [:value | [self at: key put: value]]
+ 		ifAbsent: [[self removeKey: key]].
+ 	self at: key put: anObject.
+ 	assoc := self associationAt: key ifAbsent: [nil].
+ 	^ aBlock ensure: [
+ 		| newAssoc |
+ 		((newAssoc := self associationAt: key ifAbsent: [nil]) == assoc
+ 			and: [newAssoc value = anObject])
+ 			ifTrue: [revertBlock value]]!



More information about the Squeak-dev mailing list