Skip to content

Commit c66ccbc

Browse files
committed
Handle variadic generic tuples (both concretely and in abstraction
patterns) in argument positions in reabstraction thunks. Most of the difficulty in this work continues to center around (1) trying to reuse as much code as possible between the parameter and result paths and (2) propagating ownership information as necessary throughout the code. I did my best to assert the preconditions and postconditions here, but undoubtedly I'm missing cases. Some simplicity here is still eluding me here. This patch necessarily changes quite a bit of the code used in non-variadic paths. I tried to avoid doing things that I knew would be risky, like optimizing copies. I did fail in a few places: e.g. we should now generate significantly better code when erasing to Optional<Any>, just because the code was oddly poorly-factored before. You can see the effect on the function_conversion test case.
1 parent 611776e commit c66ccbc

File tree

4 files changed

+1166
-612
lines changed

4 files changed

+1166
-612
lines changed

0 commit comments

Comments
 (0)