| ... | ... | @@ -1,17 +1,27 @@ |
| 1 | * grep for "coroutine" and "coro" and replace all that nomenclature with "async functions" |
| 1 | 2 | * alignment of variables not being respected in async functions |
| 2 | | * for loops need to spill the index. other payload captures probably also need to spill |
| 3 | | * compile error (instead of crashing) for trying to get @Frame of generic function |
| 4 | | * compile error (instead of crashing) for trying to async call and passing @Frame of wrong function |
| 5 | | * `const result = (await a) + (await b);` this causes "Instruction does not dominate all uses" - need spill |
| 6 | | * compile error for error: expected anyframe->T, found 'anyframe' |
| 7 | | * compile error for error: expected anyframe->T, found 'i32' |
| 8 | 3 | * await of a non async function |
| 9 | 4 | * async call on a non async function |
| 5 | * documentation |
| 6 | - @asyncCall |
| 7 | - @frame |
| 8 | - @Frame |
| 9 | - @frameSize |
| 10 | - coroutines section |
| 11 | - suspend |
| 12 | - resume |
| 13 | - anyframe, anyframe->T |
| 10 | 14 | * a test where an async function destroys its own frame in a defer |
| 15 | * compile error (instead of crashing) for trying to get @Frame of generic function |
| 16 | * compile error (instead of crashing) for trying to async call and passing @Frame of wrong function |
| 11 | 17 | * implicit cast of normal function to async function should be allowed when it is inferred to be async |
| 12 | | * @typeInfo for @Frame(func) |
| 18 | * compile error for error: expected anyframe->T, found 'anyframe' |
| 19 | * compile error for error: expected anyframe->T, found 'i32' |
| 13 | 20 | * peer type resolution of *@Frame(func) and anyframe |
| 14 | 21 | * peer type resolution of *@Frame(func) and anyframe->T when the return type matches |
| 22 | * for loops need to spill the index. other payload captures probably also need to spill |
| 23 | * `const result = (await a) + (await b);` this causes "Instruction does not dominate all uses" - need spill |
| 24 | * @typeInfo for @Frame(func) |
| 15 | 25 | * returning a value from within a suspend block |
| 16 | 26 | * make resuming inside a suspend block, with nothing after it, a must-tail call. |
| 17 | 27 | * make sure there are safety tests for all the new safety features (search the new PanicFnId enum values) |
| ... | ... | @@ -22,17 +32,6 @@ |
| 22 | 32 | * calling a generic function which is async |
| 23 | 33 | * make sure `await @asyncCall` and `await async` are handled correctly. |
| 24 | 34 | * allow @asyncCall with a real @Frame(func) (the point of this is result pointer) |
| 25 | | * documentation |
| 26 | | - @asyncCall |
| 27 | | - @frame |
| 28 | | - @Frame |
| 29 | | - @frameSize |
| 30 | | - coroutines section |
| 31 | | - suspend |
| 32 | | - resume |
| 33 | | - anyframe, anyframe->T |
| 34 | | * call graph analysis to have fewer stack trace frames |
| 35 | | * grep for "coroutine" and "coro" and replace all that nomenclature with "async functions" |
| 36 | 35 | * when there are multiple calls to async functions in a function, reuse the same frame buffer, so that the |
| 37 | 36 | needed bytes is equal to the largest callee's frame |
| 38 | 37 | * if an async function is never called with async then a few optimizations can be made: |