This PR refines the inline implementation to peform various tests for consistency:
report an error if return is used in the inlined functions (currently not supported)
report errors if inlining introduces inconsistency in the expansion context (calling private functions, accessing module memory, etc.)
re-arrange the acquires analysis, allowing inline functions to access memory without decl of acquires. Rather, check acquires after inlining.
The last step, specifically, also allows to write generic inline functions which deal with memory. This has been excercised in the objects.move testcase.
The change in the acquires leads to a different style of acquire error messages (also less followup-errors) which results in baseline changes.
This PR refines the inline implementation to peform various tests for consistency:
return
is used in the inlined functions (currently not supported)acquires
. Rather, checkacquires
after inlining.The last step, specifically, also allows to write generic inline functions which deal with memory. This has been excercised in the objects.move testcase.
The change in the acquires leads to a different style of acquire error messages (also less followup-errors) which results in baseline changes.