implements PR008.1 clean up
This commit is contained in:
parent
099ed96c82
commit
20c5cd7841
@ -1,35 +0,0 @@
|
||||
# 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.
|
||||
@ -1,33 +0,0 @@
|
||||
# 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.
|
||||
Loading…
x
Reference in New Issue
Block a user