Block a user
Type check the return type
Also allow returning procedure pointers (see prepare_rvalue
for function declaration to pointer conversion).
Allow "calling" any expression, not just an identifier
Allow "calling" any expression, not just an identifier