source: tests/exceptions/cancel/coroutine.cfa

Last change on this file was d00d581, checked in by Henry Xue <y58xue@…>, 2 months ago

Update exception tests to use new syntax

  • Property mode set to 100644
File size: 641 bytes
Line 
1// Try cancelling a coroutine.
2
3#include <coroutine.hfa>
4
5exception internal_error {};
6vtable(internal_error) internal_vt;
7
8coroutine WillCancel {};
9
10const char * msg(CoroutineCancelled(WillCancel) * this) {
11        return "CoroutineCancelled(WillCancel)";
12}
13
14void main(WillCancel & wc) {
15        printf("1");
16        cancel_stack((internal_error){&internal_vt});
17        printf("!");
18}
19
20int main(int argc, char * argv[]) {
21        WillCancel cancel;
22        try {
23                printf("0");
24                resume(cancel);
25                printf("4");
26        } catchResume (CoroutineCancelled(WillCancel) * error) {
27                printf("2");
28                if ((virtual internal_error *)error->the_exception) {
29                        printf("3");
30                }
31        }
32        printf("5\n");
33}
Note: See TracBrowser for help on using the repository browser.