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

1.8 KiB

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.