diff --git a/test/libponyc-run/promise-flatten-next-regression-3856/expected-exit-code.txt b/test/libponyc-run/promise-flatten-next-regression-3856/expected-exit-code.txt new file mode 100644 index 00000000000..c227083464f --- /dev/null +++ b/test/libponyc-run/promise-flatten-next-regression-3856/expected-exit-code.txt @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/test/libponyc-run/promise-flatten-next-regression-3856/main.pony b/test/libponyc-run/promise-flatten-next-regression-3856/main.pony new file mode 100644 index 00000000000..37059dd73d2 --- /dev/null +++ b/test/libponyc-run/promise-flatten-next-regression-3856/main.pony @@ -0,0 +1,24 @@ +use "promises" + +actor FlattenNextProbe + new create(handler: Handler iso) => + let promise = Promise[String] + // We need a call to next to be present with a call to flatten_next to trigger the issue during reachability analysis + promise.next[Any tag](recover this~behaviour() end) + (consume handler)(recover String end, promise) + + be behaviour(value: String) => + None + + +class Handler + fun ref apply(line: String, prompt: Promise[String]) => + let p = Promise[String] + // BUG: Can't change the flatten_next + p.flatten_next[String]({ (x: String) => Promise[String] }) + + +actor Main + new create(env: Env) => + // BUG: Can't change this + let term = FlattenNextProbe(Handler) \ No newline at end of file