60 lines
1.7 KiB
Markdown
60 lines
1.7 KiB
Markdown
# PR-05.0.5 - Synthetic Stdlib FileId via FileTable
|
|
|
|
## Briefing
|
|
|
|
`InterfaceModuleLoader` hoje aloca `FileId` sintetico por `AtomicInteger`.
|
|
|
|
Esta PR move a alocacao de arquivos sinteticos para o `FileTable`, mantendo uma unica autoridade de identidade de arquivo.
|
|
|
|
## Motivation
|
|
|
|
### Dor que esta PR resolve
|
|
|
|
1. Risco de colisao/deriva de `FileId` fora da infraestrutura oficial.
|
|
2. Arquivos sinteticos ficam fora da trilha normal de metadata de source.
|
|
3. Diagnosticos e spans de stdlib perdem consistencia de origem no pipeline.
|
|
|
|
## Target
|
|
|
|
Fazer todo `FileId` (incluindo sintetico) vir do `FileTable`.
|
|
|
|
## Scope
|
|
|
|
1. `InterfaceModuleLoader`.
|
|
2. Contexto de carga de stdlib/interface para suportar registro no `FileTable`.
|
|
3. Source handle sintetico minimo para parser/diagnostico.
|
|
|
|
## Non-Goals
|
|
|
|
1. Nao altera conteudo dos modulos stdlib.
|
|
2. Nao altera parse mode de interface.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Criar `SourceHandle` sintetico para fontes carregadas da stdlib/interface.
|
|
2. Registrar cada handle no `FileTable` e usar `FileId` retornado.
|
|
3. Remover contador `AtomicInteger` de `InterfaceModuleLoader`.
|
|
4. Preservar caminho lógico para mensagens (ex.: origem virtual stdlib).
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. `InterfaceModuleLoader` nao usa mais `new FileId(...)`.
|
|
2. Todo `FileId` de stdlib/interface existe no `FileTable`.
|
|
3. Diagnosticos em fontes sinteticas mantem atribuicao consistente.
|
|
|
|
## Tests
|
|
|
|
1. Teste de carga de interface garantindo que `FileId` sintetico foi registrado no `FileTable`.
|
|
2. Teste de span/diagnostico para arquivo sintetico.
|
|
|
|
## Affected Documents
|
|
|
|
1. `docs/pbs/specs/11. AST Specification.md`
|
|
2. `docs/pbs/specs/13. Lowering IRBackend Specification.md`
|
|
|
|
## Open Questions
|
|
|
|
Sem bloqueios arquiteturais.
|