a2428ca5da64e19a63fba6eabf5508f997a3739c
SPEC.md allows `try` only inside a function returning an error union, but the check sat in the FE_N_EXPR_STMT case, so it only ever saw a bare `try e;` and walked past `var x = try e;` and `x = try e;`. Move it onto the try expression in check_expr and drop the statement-level copy. This could not land before M7: closing the hole forces m5/runtime.fe's `run` to return an error union, and value returns from `-> !T` need contextual success construction. That arrives with M7, and `run` is now `-> !i32`, so the rule can be enforced. Supersedes the SPEC.AUDIT.md entry that recorded the blockage. M1-M7: 183 passed.
Description
doslang mirror
914 KiB
Languages
C
94.2%
Python
3%
Assembly
2%
JavaScript
0.6%