1--TEST--
2Test unfinished fiber with suspend in finally
3--EXTENSIONS--
4fiber
5--FILE--
6<?php
7
8$fiber = new Fiber(function (): object {
9    try {
10        try {
11            echo "fiber\n";
12            return new \stdClass;
13        } finally {
14            echo "inner finally\n";
15            Fiber::suspend();
16            echo "after await\n";
17        }
18    } catch (Throwable $exception) {
19        echo "exit exception caught!\n";
20    } finally {
21        echo "outer finally\n";
22    }
23
24    echo "end of fiber should not be reached\n";
25});
26
27$fiber->start();
28
29unset($fiber); // Destroy fiber object, executing finally block.
30
31echo "done\n";
32
33?>
34--EXPECTF--
35fiber
36inner finally
37outer finally
38done
39