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

1.7 KiB

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.