syndicate-2017/racket/syndicate/examples/actor/example-exception-in-on-sto...

22 lines
628 B
Racket

#lang syndicate
;; Test cleanup after exception in stop script
;;
;; Correct output:
;;
;; inner gone
;; outer gone
;; middle gone
;;
;; (or some permutation of these) plus an exception report for the division by zero.
(assertion-struct layer (name))
(spawn (define root-facet (current-facet-id))
(assert (layer 'outer))
(on-start (react (assert (layer 'middle))
(on-start (flush!) (flush!) (stop-facet root-facet))
(on-stop (/ 1 0))
(on-start (react (assert (layer 'inner)))))))
(spawn (on (retracted (layer $x)) (printf "~a gone\n" x)))