Code reference detail
reqlan-scope.ts
packages/language/src/reqlan-scope.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 | |
| scope_cache_release | done | This idea applies when the engine is `node` ( [node_engine_open_path] ). `fileIdeasCache` and `importPathCache` drop a URI when that Langium document is removed. A version change still replaces the entry for a document that stays. The rust server drops the open model in [native_cache_retention]. Related: [open_file_hot_path], [native_cache_retention]. | 0.057 | |
| anonymous_imports_allowed | done | A quoted path plus idea — for example `["../ontology.rq".attribute]` — opens that file as an ideaset. Every idea in the target file is in scope for that reference. A from-import or qualified import of the same path only binds the listed names for bare `[name]` references. It must not hide other ideas from a quoted-path reference. | 0.073 | |
| import_keywords | The keywords import, from, and as are reserved for import statements. Import keywords may also appear as ordinary words in idea body text when not at statement start. | 0.047 | ||
| import_tokenisation | if an import is given an alias, then the base name is still available as a variable name and should not cause a conflict. Only the alias binds in the importing file; the imported idea's base name may be reused for a local idea. e. g. The same rule applies to qualified imports with `as`. Unaliased imports still bind the idea name and conflict with a local idea of that name. Related: ["../extension/language/syntax/features-syntax.rq".sensible_alias_support]. | 0.053 | ||
| attribute_namespacing | done | A bracket link `[idea.attribute]` targets one attribute of that idea. The first name is the idea name. The second name is the attribute name. The grammar types that name as an attribute or an idea declaration. `[attribute_namespacing.example]` targets the `example` attribute of this idea. The form `[ideaset.member]` still targets an ideaset member. See [references_to_subidea]. The editor opens the attribute when the first name is an idea. The editor reports an error when that idea has no attribute with the second name. The link target is only that attribute on that idea. HTML export uses the same link form. The export link opens that attribute on the idea page. See [attribute_namespacing.example]. Related: [reference_brackets], [attribute_marker], ["../core_analysis/html_export.rq".html_export_internal_links]. | 0.129 | |
| file_suffix | Reqlan requirement documents use the. rq file suffix. | 0.052 | ||
| reference_qualified | Cross-file references may qualify an import path or alias with an idea name. Qualified wikilinks may combine a quoted import path with a dot and idea name. A quoted path opens the target file as an ideaset ( ["./imports.rq".anonymous_imports_allowed] ). Partial from-import of that path does not restrict which ideas the quoted path can name. | 0.247 | ||
| reference_resolution_order | done | For each `.rq` file, identify the names in local scope, then resolve references. Sequence: 1. Collect all idea, one-liner, and ideaset declarations in the file. Declaration order does not change which names are in scope. 2. Collect reference candidates in the file. 3. Resolve each candidate against those local declarations. 4. Resolve imports only for candidates that have no local match. Stop import lookup for a candidate when a local match exists. The language server and the indexer must use this sequence. Open-file editor underlines follow [open_file_reference_sequencing]. Related: [same_file_reference], [ideaset], ["./imports.rq".import_tokenisation], ["../indexer/indexer.rq".local_symbolic_analysis]. | 0.053 | |
| references_to_subidea | done | It is valid to reference a member of an [ideaset] as `[ideaset.member]`, for example [example_ideaset.subidea1]. The indexer must record that reference on the namespace leaf node. In this example the leaf is [subidea1], not [example_ideaset]. Related: [reference_brackets], [same_file_reference], ["../reference_types.rq".idea_reference], ["../indexer/indexer.rq".index]. | 0.167 | |
| same_file_reference | [reference_brackets] and [reference_wikilink] may target an idea, one-liner, or [ideaset] in the same file. The target may be declared before or after the reference. Forward references are valid. Circular references between declarations in the same file are valid. Resolution order: [reference_resolution_order]. | 0.100 |
Reference labels
"../../packages/language/src/reqlan-scope.ts", ../../../../packages/language/src/reqlan-scope.ts, ../../packages/language/src/reqlan-scope.ts