1.2 KiB
1.2 KiB
Visão de arquitetura alvo
Camadas
- FileDB: texto, URI/path, line-index, snapshots.
- Lexer/Parser: produz AstArena (NodeId + spans por nó).
- Binder/Resolver: produz SymbolArena + índices (def/ref).
- Typecheck: produz TypeArena + facts (node→type, symbol→type).
- Analysis Export:
analysis.json(full) +symbols.json(leve e estável). - LSP Server: consome
AnalysisDbe responde requests.
IDs padronizados (newtypes)
FileId(u32)NodeId(u32)NameId(u32)(interner)SymbolId(u32)TypeId(u32)ProjectId(u32)ModuleId(u32)
Invariantes
- AST é imutável após construção (normativo na spec PBS).
- Nenhuma fase expõe referências diretas entre nós; apenas IDs.
- IDs externos são aceitos, mas sempre passam por validate/resolve (API checked).
Regras para Junie (para reduzir vai-e-volta)
-
Não “inventar design”. Se algo não estiver especificado, criar TODO e parar.
-
Não mudar formatação/estilo fora do escopo.
-
Todo novo tipo público precisa de doc-comment curta e exemplo.
-
Toda mudança de JSON precisa:
schema_versionbump (se não for backward)- teste de snapshot
-
Cada PR deve deixar
cargo testverde.