analysis: check return-type compatibility (OWN035)
An external review of the very first main flagged two analyzer/codegen
divergences that survived into the current tree: lower_return silently
dropped a non-owned or empty return symbol to None, so the analyzer treated
the function as a valid terminal while codegen printed the raw AST return x;
-- emitting uncompilable C# the checker had accepted:
* fn f(n: int) -> Buffer { return n; } -> Buffer f(int n){ return n; }
* fn f() -> Buffer { return; } -> Buffer f(){ return; }
Diagnose the mismatch instead of dropping it (new OWN035): a ).
#5
Merged