From 20c5cd784104934a180d6d4c4d037c901b80a220 Mon Sep 17 00:00:00 2001 From: bQUARKz Date: Thu, 5 Mar 2026 15:20:09 +0000 Subject: [PATCH] implements PR008.1 clean up --- ...static-semantics-declaration-validation.md | 35 ------------------- ...atic-semantics-call-resolution-and-flow.md | 33 ----------------- 2 files changed, 68 deletions(-) delete mode 100644 docs/pbs/pull-requests/PR-007-pbs-static-semantics-declaration-validation.md delete mode 100644 docs/pbs/pull-requests/PR-008-pbs-static-semantics-call-resolution-and-flow.md diff --git a/docs/pbs/pull-requests/PR-007-pbs-static-semantics-declaration-validation.md b/docs/pbs/pull-requests/PR-007-pbs-static-semantics-declaration-validation.md deleted file mode 100644 index 8b7e9aca..00000000 --- a/docs/pbs/pull-requests/PR-007-pbs-static-semantics-declaration-validation.md +++ /dev/null @@ -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. diff --git a/docs/pbs/pull-requests/PR-008-pbs-static-semantics-call-resolution-and-flow.md b/docs/pbs/pull-requests/PR-008-pbs-static-semantics-call-resolution-and-flow.md deleted file mode 100644 index 223fe165..00000000 --- a/docs/pbs/pull-requests/PR-008-pbs-static-semantics-call-resolution-and-flow.md +++ /dev/null @@ -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.