prometeu-studio/docs/pbs/pull-requests/PR-007-pbs-static-semantics-declaration-validation.md
2026-03-24 13:42:19 +00:00

36 lines
1.8 KiB
Markdown

# PR-007 - PBS Static Semantics Declaration Validation
## Briefing
Depois da cobertura sintatica, falta a camada de semantica estatica para validar declaracoes, namespaces e invariantes de assinatura.
Este PR entrega a primeira fase semantica: sem resolver `apply` completo ainda.
## Target
- Specs:
- `docs/pbs/specs/4. Static Semantics Specification.md` (secoes 2, 3.1-3.7, 3.18 subset de declaracao)
- `docs/pbs/specs/12. Diagnostics Specification.md` (phase = static semantics)
- Codigo:
- `prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/PbsFrontendCompiler.java`
- novo pacote de validadores semanticos em `.../pbs/semantics/`.
## Method
1. Introduzir binder de simbolos por namespace (`type`, `value`, `callable`, `host-owner`).
2. Validar duplicatas de parametros, labels de retorno, enum/error cases e declaracoes.
3. Validar invariantes de retorno (`optional` vs `result`, `optional void`, etc.).
4. Validar superficies de declaracao (`ctor`, `service`, `callback`, `const`) conforme regras de forma.
5. Emitir diagnosticos deterministas por codigo estavel para cada classe de erro.
## Acceptance Criteria
- Binder constroi tabelas por namespace sem colapsar overload cedo.
- Erros obrigatorios de declaracao aparecem com spans corretos e codigo estavel.
- Duplicata de funcao usa identidade por shape (nao por label).
- Regras de validade de `declare const` (tipo obrigatorio, init quando aplicavel) sao aplicadas.
- Nenhum arquivo valido passa a falhar por ruido de validacao.
## Tests
- `PbsSemanticsDeclarationsTest` novo com casos positivos/negativos para:
- duplicatas por namespace;
- enum/error duplicados;
- retorno invalido (`optional/result`);
- declaracoes `const` invalidas;
- callback/service/ctor shape invalidos.