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

34 lines
1.6 KiB
Markdown

# 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.