mirror of
https://github.com/unisonweb/unison.git
synced 2024-09-17 13:27:30 +03:00
775 B
775 B
Test case for a variable capture problem during let floating. The encloser wasn't accounting for variables bound by matches.
ability Issue t where
one : '{Issue t} () -> {Issue t} ()
two : '{Issue t} () -> {Issue t} ()
three : '{Issue t} () -> {Issue t} ()
x : '{Issue t} () -> {Issue t} ()
x _ = ()
works x = x + 1
run : '{Issue t} () -> '{Stream Text} ()
run s =
go = cases
{ one x -> resume } ->
emit "one"
handle resume !x with go
{ two x -> resume } ->
emit "two"
handle resume !x with go
{ three x -> resume } ->
emit "three"
handle resume !x with go
{ _ } -> emit "done"
do handle !s with go
> Stream.toList <| run do
Issue.one do
Issue.two do
()
Issue.three do
()