#lang imperative-syndicate/test-implementation ;; An error signalled mid-turn must cause previous actions to be ;; discarded; discarded actions must not be observed by peers. (test-case [(message-struct set-box (new-value)) (assertion-struct box-state (value)) (spawn (field [current-value 0]) (assert (box-state (current-value))) (on (message (set-box $new-value)) (current-value new-value)) (begin/dataflow (when (= (current-value) 3) (error 'box "aiee")))) (spawn (on (asserted (box-state $v)) ;; must not see 3 here. (printf "~v\n" v) (send! (set-box (+ v 1)))))] (expected-output (list "0" "1" "2")))