A new version of Kernel was added to project The Inbox:
http://source.squeak.org/inbox/Kernel-fbs.696.mcz==================== Summary ====================
Name: Kernel-fbs.696
Author: fbs
Time: 7 June 2012, 9:49:29.536 pm
UUID: 8ef79df8-3ee6-4c98-947e-7603307aa0c4
Ancestors: Kernel-nice.693
* Use the canonical Array empty rather than #();
* the instvar's initialised to an Array anyway so #ifNotNil: is a no-op.
* #evaluateResolver: reimplemented #cull:; rather use BlockClosure's version - less duplication.
=============== Diff against Kernel-nice.693 ===============
Item was changed:
----- Method: Promise>>evaluateResolver: (in category 'private') -----
evaluateResolver: resolverBlock
+ resolverBlock cull: value.!
- resolverBlock numArgs = 0
- ifTrue: [resolverBlock value]
- ifFalse: [resolverBlock value: value].
- !
Item was changed:
----- Method: Promise>>initialize (in category 'initialize') -----
initialize
isResolved := false.
+ resolvers := Array empty.
- resolvers := #().
mutex := Mutex new.!
Item was changed:
----- Method: Promise>>resolveWith: (in category 'resolving') -----
resolveWith: arg
"Resolve this promise"
mutex critical: [
isResolved ifTrue: [self error: 'Promise was already resolved'].
value := arg.
isResolved := true.
+ resolvers do: [:r | self evaluateResolver: r].
- resolvers ifNotNil: [resolvers do: [:r | self evaluateResolver: r]].
].!