77 lines
2.2 KiB
Markdown
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`.
|