prometeu-studio/docs/pbs/pull-requests/PR-006-pbs-barrel-and-module-visibility.md
2026-03-24 13:42:19 +00:00

36 lines
1.7 KiB
Markdown

# PR-006 - PBS Barrel and Module Visibility
## Briefing
A spec define `mod.barrel` como fonte unica de visibilidade, mas o frontend atual ignora `.barrel`.
Este PR implementa parser/validacao de barrel e aplica regras minimas de visibilidade/exportacao em nivel de modulo.
## Target
- Specs:
- `docs/pbs/specs/3. Core Syntax Specification.md` (secoes 5.1, 5.2, 5.3, 6.1)
- `docs/pbs/specs/12. Diagnostics Specification.md` (fases syntax/linking)
- Codigo:
- `prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PBSFrontendPhaseService.java`
- novo parser/modelo para `mod.barrel` em `prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/pbs/`.
## Method
1. Adicionar parser dedicado para `mod.barrel` com itens e assinaturas de funcao.
2. Detectar `missing mod.barrel` por modulo e duplicatas no barrel.
3. Validar resolucao barrel -> declaracoes top-level da AST do modulo.
4. Garantir que `pub/mod` em `.pbs` continue proibido fora dos contextos permitidos.
5. Emitir diagnosticos com atribuicao primaria no arquivo/barrel que causou a falha.
## Acceptance Criteria
- Compilacao de modulo sem `mod.barrel` falha deterministicamente.
- Duplicatas em barrel sao detectadas por regra correta (funcao por assinatura; outros por kind+nome).
- Cada item de barrel resolve para declaracao existente de modulo.
- Itens de barrel invalidos geram erro sem quebrar analise dos demais itens.
- Importacao cross-module usa somente simbolos `pub`.
## Tests
- `PbsBarrelParserTest` novo para shape do barrel.
- `PbsModuleVisibilityTest` novo cobrindo:
- modulo sem barrel;
- duplicatas de simbolo/assinatura;
- entry nao resolvido;
- import de simbolo nao `pub`.