36 lines
1.7 KiB
Markdown
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`.
|