prometeu-studio/docs/pbs/pull-requests/PR-018-pbs-result-flow-ok-err-handle-rules.md
2026-03-24 13:42:21 +00:00

1.4 KiB

PR-018 - PBS Result Flow (ok/err/handle) Rule Enforcement

Briefing

Result-flow rules are only partially enforced. This PR enforces allowed positions for ok/err, error-label validation, and handle arm terminal form requirements.

Motivation

Result-flow constructs are normative control-flow surfaces and must not behave as unconstrained expressions.

Target

  • ok(...) and err(...) validation in return-flow contexts.
  • handle semantic validation, including terminal form of block arms.

Scope

  • Restrict ok/err to allowed result-flow positions.
  • Validate err(E.case) against declared error type.
  • In handle block arms, enforce terminal ok(payload) or err(E2.case).

Method

  • Add expression-use/context flags for result-flow forms.
  • Add dedicated diagnostics for invalid placement and invalid error labels.
  • Add terminal-check pass for handle block arms.

Acceptance Criteria

  • ok/err outside allowed positions are rejected deterministically.
  • return ok/err validates declared result<E> contract.
  • handle block arms violating terminal rules are rejected deterministically.
  • Existing propagate (!) and handle exhaustiveness checks remain stable.

Tests

  • Add positive and negative fixtures for return ok/err.
  • Add invalid-position tests for ok/err as ordinary expression.
  • Add handle arm terminal-form tests.

Non-Goals

  • New result syntax.
  • Runtime trap policy changes.