The Inbox: Kernel-tonyg.1059.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Kernel-tonyg.1059.mcz

commits-2
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!