prometeu-studio/docs/compiler/pbs/pull-requests/PR-19.4-pbs-semantics-global-surface-identity-and-collision-validation.md

77 lines
2.2 KiB
Markdown

# PR-19.4 - PBS Semantics for Global Surface, Identity, and Collision Validation
## Briefing
Com parser e AST aceitando a nova surface, a primeira frente semantica precisa fechar o contrato local de `declare global`:
1. categoria declarativa distinta de `const`,
2. regras de namespace e colisao,
3. barrel/import visibility,
4. admissibilidade local do initializer.
Esta PR nao fecha ainda ordering nem ciclo entre globals.
## Target
Implementar validacao semantica para:
1. `declare global` como categoria propria,
2. barrel `global`,
3. colisao entre `fn`, `service`, `global` e `const`,
4. alias obrigatorio em imports quando houver conflito,
5. formas suportadas e nao suportadas no initializer.
## Dependencies
Prerequisitos diretos:
1. `PR-19.1`
2. `PR-19.3`
## Scope
1. Resolver `global` no value namespace sem colapsar categoria com `const`.
2. Enforcar collisions compile-time entre top-level visible symbols.
3. Validar import through `global` barrel entry.
4. Validar formas proibidas no initializer de `global`.
## Non-Goals
1. Nao construir ainda o dependency graph entre globals.
2. Nao validar lifecycle markers.
3. Nao implementar lowering.
## Method
1. Introduzir validacao de declaracao e linking local antes do graph global.
2. Emitir diagnosticos diretamente nos spans reais do codigo do usuario.
3. Tratar barrel/import como autoridade de visibilidade para globals.
## Acceptance Criteria
1. `global` e `const` permanecem semanticamente distintos.
2. Collisions entre `fn` / `service` / `global` / `const` geram erro compile-time.
3. Alias e exigido quando import criaria shadowing invalido.
4. Initializers proibidos de `global` sao rejeitados com diagnostico especifico.
5. Imports de global so resolvem via barrel `global`.
## Tests
1. Fixtures positivas para globals simples, `new`, member-value e import por barrel `global`.
2. Fixtures negativas para:
- collision cross-category,
- import sem alias quando exigido,
- `fn` no initializer,
- `if` no initializer,
- `some(...)` / `none`.
## Affected Artifacts
1. validadores semanticos PBS
2. linking/import resolution PBS
3. testes de semantics/declarations
## Open Questions
1. Nenhuma. Dependency graph fica para `PR-19.5`.