Code reference detail
open-file-hot-path.test.ts
reqlan rq/extension/language/support/packages/language/test/open-file-hot-path.test.ts
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| node_engine_open_path | done | This idea applies when `reqlan.languageServer.engine` is `node`. The default engine is [language_server_rust]. The node server populates a Langium AST for the open buffer at `DocumentState.Parsed`. Later builder phases attach scopes, links, and diagnostics. They must not replace that AST. Parsed-time handlers must not read Langium `.ref`. Use `$refText`, the symbolic extract, or `peekResolvedRef` until `ComputedScopes`. The linker must not resolve a cross-reference while that document is below `ComputedScopes`. Do not log the Langium warning. Do not store a failed link. Scope lookup, code lens, completion, and idea summaries use `readResolvedRef` or `peekResolvedRef` until that phase. When another `.rq` file changes, relink this document when the index says it is affected, when comment references name that file, or when this document's outbound targets include the changed URI. Do not relink every document that still has a linker error. Workspace load parses at most 8 files at a time ( [workspace_parse_concurrency] ). `fileIdeasCache` and `importPathCache` drop a URI when that document is removed ( [scope_cache_release] ). Related: [open_file_algorithm], [ast_lifecycle]. | 0.133 | |
| open_file_hot_path | in-progress | Open-file work stays on the one parse of this buffer plus one parse per imported file. Reuse that model for document links, go-to-definition, hover, and diagnostics until the text or the import-root mapping changes. Keep that model, and the import name lists, only for open editors ( [native_cache_retention] ). Look up an open import by URI. Do not match on file basename. Do not read SQLite. Do not call `list_all_ideas`. At parse time, publish lex and parse diagnostics with same-file and import errors. The editor must not wait for a workspace link phase to see a broken parse. Handlers on this path read the open model. They do not build a workspace link graph. Related: [open_file_algorithm], [outbound_one_hop], [ast_lifecycle], [comment_backlink_sequence]. | 0.186 | |
| outbound_one_hop | done | The hot path parses imported files only. For each import in the open buffer, parse that file once, then stop. Read idea names, idea lines, and import aliases. Do not parse files that the import references. Do not read SQLite. Prefer the open buffer text when that import is already open and dirty. Cache each parse by path plus file stamp ( modified time and size ) ( [lsp_session] ). A current stamp is one `stat`. Read and parse the file only when the stamp changed. Cache the open buffer by URI plus text fingerprint ( [open_file_hot_path] ). [local_symbolic_analysis] stays file-local. This hop is outside that extract. An extensionless import path prefers `.rq`, then the path as written ( [implicit_file_extension] ). A qualified reference that is not an import waits for [lazy_features_after_outbound]. Related: [open_file_algorithm], [non_web_reference_navigation]. | 0.246 |
Reference labels
node_engine_open_path, open_file_hot_path, outbound_one_hop