1.8 KiB
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
- Introduzir binder de simbolos por namespace (
type,value,callable,host-owner). - Validar duplicatas de parametros, labels de retorno, enum/error cases e declaracoes.
- Validar invariantes de retorno (
optionalvsresult,optional void, etc.). - Validar superficies de declaracao (
ctor,service,callback,const) conforme regras de forma. - 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
PbsSemanticsDeclarationsTestnovo com casos positivos/negativos para:- duplicatas por namespace;
- enum/error duplicados;
- retorno invalido (
optional/result); - declaracoes
constinvalidas; - callback/service/ctor shape invalidos.