Files
hakorune/docs/private/papers/public/block_postfix_catch.md

960 B
Raw Blame History

BlockPostfix Catch Language Design (Draft)

Goal

  • Make exception boundaries explicit by attaching catch/cleanup to 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 throw in a standalone block requires an immediate postfix catch.

Implementation Notes

  • Parser (gated): normalize postfix to ASTNode::TryCatch.
  • Bridge(Resultmode): ThrowCtx routes nested throw to the single catch; merge with PHIoff.
  • Friendly errors: disallow toplevel 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.