prometeu-studio/docs/pbs/pull-requests/PR-008-pbs-static-semantics-call-resolution-and-flow.md
2026-03-24 13:42:19 +00:00

1.6 KiB

PR-008 - PBS Static Semantics Call Resolution and Flow

Briefing

A parte mais critica de semantica de execucao em compile-time ainda falta: resolucao de apply, overloading, member projection e fluxo de optional/result. Este PR entrega essa segunda fase semantica com foco em determinismo.

Target

  • Specs:
    • docs/pbs/specs/4. Static Semantics Specification.md (secoes 3.8-3.17 e 3.18 subset de uso)
    • docs/pbs/specs/9. Dynamic Semantics Specification.md (baseline de comportamento observavel)
  • Codigo:
    • validadores/resolvers em .../pbs/semantics/
    • integracao em PbsFrontendCompiler.

Method

  1. Implementar resolucao de callable para apply e call sugar.
  2. Implementar regras de sobrecarga (unresolved/ambiguous) e tie-break por contexto esperado.
  3. Validar member access/projection (struct, service, tuple, enum path) e proibir bare method extraction.
  4. Validar fluxo de controle (if/switch, exaustividade, tipos de branch) e loops (break/continue contexto).
  5. Validar regras de optional/result: none contextual, else, !, handle.

Acceptance Criteria

  • apply em alvo nao chamavel gera erro deterministico.
  • Casos unresolved e ambiguous de overload sao diferenciados.
  • switch em contexto de valor exige exaustividade.
  • ! e handle respeitam tipo de erro do retorno result do escopo.
  • Projecao invalida (slot/label/method) gera diagnostico com span do uso.

Tests

  • PbsSemanticsApplyResolutionTest novo.
  • PbsSemanticsControlFlowTest novo.
  • PbsSemanticsOptionalResultTest novo.
  • Fixtures de regressao para ambiguidades e mismatch de tipo.