[squeak-dev] The Inbox: Kernel-tonyg.1059.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Feb 17 19:10:16 UTC 2017


A new version of Kernel was added to project The Inbox:
http://source.squeak.org/inbox/Kernel-tonyg.1059.mcz

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

Name: Kernel-tonyg.1059
Author: tonyg
Time: 17 February 2017, 2:10:00.316749 pm
UUID: 75619647-2c74-47e9-bbd4-adb402acfd2d
Ancestors: Kernel-ul.1058

Change Promise>>wait to signal BrokenPromise if the promise is rejected.

=============== Diff against Kernel-ul.1058 ===============

Item was added:
+ Error subclass: #BrokenPromise
+ 	instanceVariableNames: 'promise'
+ 	classVariableNames: ''
+ 	poolDictionaries: ''
+ 	category: 'Kernel-Exceptions'!
+ 
+ !BrokenPromise commentStamp: 'tonyg 2/17/2017 13:53' prior: 0!
+ I am signalled when, during a Promise>>wait, the promise is rejected.
+ 	promise:		the promise itself.
+ !

Item was added:
+ ----- Method: BrokenPromise>>defaultAction (in category 'as yet unclassified') -----
+ defaultAction
+ 	self messageText: 'Promise was rejected'.
+ 	^super defaultAction!

Item was added:
+ ----- Method: BrokenPromise>>isResumable (in category 'as yet unclassified') -----
+ isResumable
+ 	^ true!

Item was added:
+ ----- Method: BrokenPromise>>promise (in category 'as yet unclassified') -----
+ promise
+ 	^ promise!

Item was added:
+ ----- Method: BrokenPromise>>promise: (in category 'as yet unclassified') -----
+ promise: aPromise
+ 	promise := aPromise!

Item was changed:
  ----- Method: Promise>>wait (in category 'waiting') -----
  wait
+ 	"Wait unconditionally for this promise to become fulfilled or rejected."
- 	"Wait unconditionally for this promise to resolve."
  	| sema |
  	sema := Semaphore new.
  	self whenResolved:[sema signal].
+ 	self whenRejected:[sema signal].
  	sema wait.
+ 	^ self isResolved
+ 		ifTrue: [ value ]
+ 		ifFalse: [ BrokenPromise new promise: self; signal ]!
- 	^value!



More information about the Squeak-dev mailing list