| ... | @@ -1,17 +1,27 @@ | ... | @@ -1,17 +1,27 @@ |
| | 1 | * grep for "coroutine" and "coro" and replace all that nomenclature with "async functions" |
| 1 | * alignment of variables not being respected in async functions | 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 | * await of a non async function | 3 | * await of a non async function |
| 9 | * async call on a non async function | 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 | * a test where an async function destroys its own frame in a defer | 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 | * implicit cast of normal function to async function should be allowed when it is inferred to be async | 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 | * peer type resolution of *@Frame(func) and anyframe | 20 | * peer type resolution of *@Frame(func) and anyframe |
| 14 | * peer type resolution of *@Frame(func) and anyframe->T when the return type matches | 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 | * returning a value from within a suspend block | 25 | * returning a value from within a suspend block |
| 16 | * make resuming inside a suspend block, with nothing after it, a must-tail call. | 26 | * make resuming inside a suspend block, with nothing after it, a must-tail call. |
| 17 | * make sure there are safety tests for all the new safety features (search the new PanicFnId enum values) | 27 | * make sure there are safety tests for all the new safety features (search the new PanicFnId enum values) |
| ... | @@ -22,17 +32,6 @@ | ... | @@ -22,17 +32,6 @@ |
| 22 | * calling a generic function which is async | 32 | * calling a generic function which is async |
| 23 | * make sure `await @asyncCall` and `await async` are handled correctly. | 33 | * make sure `await @asyncCall` and `await async` are handled correctly. |
| 24 | * allow @asyncCall with a real @Frame(func) (the point of this is result pointer) | 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 | * when there are multiple calls to async functions in a function, reuse the same frame buffer, so that the | 35 | * when there are multiple calls to async functions in a function, reuse the same frame buffer, so that the |
| 37 | needed bytes is equal to the largest callee's frame | 36 | needed bytes is equal to the largest callee's frame |
| 38 | * if an async function is never called with async then a few optimizations can be made: | 37 | * if an async function is never called with async then a few optimizations can be made: |