async/await rewrite follow-up #3063
Labels
bug
Observed behavior contradicts documented or intended behavior
enhancement
Solving this issue will likely involve adding new logic or components to the codebase.
stage1
The process of building from source via WebAssembly and the C backend.
Milestone
Here are the remaining items that I made note of while working on the async/await branch. Smaller issues can be solved from this list and ticked off. Larger issues will be split into new issues.
@Frame
of generic function@Frame
of wrong function[ ] implicit cast of normal function to async function should be allowed when it is inferred to be asyncimplicit cast of normal function to async function should be allowed when it is inferred to be async #3079[ ] peer type resolution ofpeer type resolution for *@Frame(func), anyframe->T, and anyframe #3078*@Frame(func)
and anyframe[ ] peer type resolution ofpeer type resolution for *@Frame(func), anyframe->T, and anyframe #3078*@Frame(func)
and anyframe->T when the return type matches[ ] for loops need to spill the index. other payload captures probably also need to spillsuspensions inside for loops generate invalid LLVM IR #3076[ ]using await in an expression generates invalid LLVM IR #3077const result = (await a) + (await b);
this causes "Instruction does not dominate all uses" - need spill[ ]implement@typeInfo
for@Frame(func)
@typeInfo
for@Frame(func)
#3066[ ] compile error for casting a function to a non-async function pointer, but then later it gets inferred to be an async functioncompile error for casting a function to a non-async function pointer, but then later it gets inferred to be an async function #3075[ ] compile error for copying a frameadd compile error for copying an async frame #3074[ ] make sureawait @asyncCall
andawait async
are handled correctly.await @asyncCall
andawait async
should generate the same code as a function call #3065[ ] allowallow @asyncCall with a real @Frame(func) rather than byte slice #3072@asyncCall
with a real@Frame(func)
(the point of this is result pointer)[ ] implementsupport@asyncCall
withnull
as the result pointer@asyncCall
withnull
as the result pointer #3068[ ] when there are multiple calls to async functions in a function, reuse the same frame buffer, so that the needed bytes is equal to the largest callee's framesmarter data layout of local variables inside async function frame to save space #3069[ ]await should not be a suspend point when used on a @Frame(func) and func is blocking #3067await
should not be a suspend point when used on a@Frame(func)
andfunc
is blocking.The text was updated successfully, but these errors were encountered: