syndicate-2017/racket/syndicate/examples/actor/example-synthetic-patch.rkt

42 lines
954 B
Racket

#lang syndicate
;; Illustrates a (now fixed) bug where creating a facet interested in something
;; already known didn't properly trigger the assertion-handler.
;;
;; Symptomatic output:
;;
;; +outer "first"
;; +show
;; -show
;; -outer "first"
;; +outer "second"
;;
;; Correct output:
;;
;; +outer "first"
;; +show
;; +outer "second"
;; -show
;; -outer "first"
;; +show
;;
;; Should eventually be turned into some kind of test case.
(struct outer (v) #:prefab)
(struct show () #:prefab)
(spawn (field [v "first"])
(assert (outer (v)))
(assert (show))
(on (message 2)
(v "second")))
(spawn (on-start (send! 1))
(during (outer $v)
(on-start (log-info "+outer ~v" v))
(on-stop (log-info "-outer ~v" v))
(during (show)
(on-start (log-info "+show"))
(on-stop (log-info "-show"))))
(on (message 1)
(send! 2)))