Expand description
v0.25: the project-wide binding index (ADR 0053).
RefSink collects use→def edges at the resolution sites themselves —
the resolver’s reference walk, the checker’s capability/service call
dispatch, and the project driver’s clause wiring — mirroring v0.24’s
ErrorSink collection-point pattern. The project pass then qualifies
bare names per unit and assembles a ProjectIndex: every in-scope
symbol’s definition site plus all of its reference sites, binding-correct
(never name-matched).
In-scope symbol kinds this increment: top-level types, free fns,
capabilities, services, agents, and providers. Instance methods, record
fields, capability op names, and local bindings are deferred (no edges
are recorded for them).
Structs§
- Call
Edge - v0.34 (ADR 0067): one resolved caller→callee call edge — a
Fnreference (callee) occurring inside a known top-level declaration (caller), atsite(the callee-name span, in the caller’s file). The backing data for call hierarchy: incoming calls group edges bycallee, outgoing bycaller. v0.36 (ADR 0069):FnandMethodcallees/callers; op-call and agent-dispatch edges are still absent (those callees aren’t index symbols — the remaining deferred index kinds). - Foreign
Ref - v0.28 (ADR 0057): one reference to a first-party (
bynk.*) symbol. Tokens-only: first-party defs point at synthetic files not on disk, so these sites are never read by definition/rename/workspace-symbol — the v0.25 exclusion of synthetic units fromsymbolsstands untouched. - Impl
Edge - v0.35 (ADR 0068): one capability→provider implementation edge — a
provides Cap = Pclause records aCapabilityreference (capability) whose enclosing owner is the provider (provider), atsite(the capability-name span in theprovidesclause). The backing data for implementation navigation:implementationon a capability returns its providers’ defs. - Index
Builder - Assembles the index from per-file declaration walks plus the sink’s
edges. Built by the project pass, which alone knows unit membership,
usestargets, and which file declares each top-level item. - Project
Index - The project-wide binding index: every in-scope symbol’s definition and references, keyed structurally. Built by the v0.24 project pass in analyse mode; empty in build mode.
- RefEdge
- One recorded use→def edge, in collection-point context.
- RefSink
- Collection-point sink for use→def edges (the
ErrorSinkanalogue). The pipeline sets the ambient file/namespace before each per-file phase; resolution sites only supply the span and target. A sink left in its default state (no file) discards edges — the single-file entry points resolve without recording. - SiteRef
- One occurrence of a symbol: the file (project-relative) and the name-segment span within that file’s analysed snapshot.
- Symbol
Entry - A symbol’s definition site plus every reference site.
- Symbol
Key - Structural symbol identity (no
DefIdplumbing): the defining unit’s qualified name, the declaration kind, and the declared name. Top-level names are unique within a unit, so the key is unambiguous. - Symbol
Modifiers - v0.28 (ADR 0057): the Bynk-specific semantic-token modifiers recorded on
a symbol at assemble time.
refinedonly when a refinement is present —type Age = Intparses asRefined { refinement: None }and is a plain alias, carrying neither;opaqueis orthogonal, soopaque B where …carries both.platform_nativewhen the declaring unit is a platform adapter (firstparty::platform_ofisSome).
Enums§
- Symbol
Kind - The kind half of a symbol’s structural key.