960 B
960 B
Block‑Postfix Catch Language Design (Draft)
Goal
- Make exception boundaries explicit by attaching
catch/cleanupto standalone blocks.
Design
- Syntax:
{ body } catch (e) { handler } [cleanup { … }]and{ body } cleanup { … }. - Policy: single catch (branch inside the catch); scope limited to the same block; no implicit propagation.
- Static check (MVP): direct
throwin a standalone block requires an immediate postfixcatch.
Implementation Notes
- Parser (gated): normalize postfix to
ASTNode::TryCatch. - Bridge(Result‑mode): ThrowCtx routes nested
throwto the single catch; merge with PHI‑off. - Friendly errors: disallow top‑level leading
catch/cleanup, and attaching to structural if/loop blocks.
References
- Parser:
src/parser/statements.rs - Smokes:
src/tests/parser_block_postfix_{catch,errors}.rs
Open Questions
- Multiple catch with type hierarchy; effects typing for static checks; formatter support.