Expand description
The analyzer-resident products Ruby’s language logic resolves through.
RubyAnalyzer owns three moka caches, nine Arc<OnceLock<..>> cells and one
PoolSafeMemo; every one of them stays in brokk-bifrost-analysis because
IAnalyzer::update/update_all rebuild the analyzer wholesale through
Self::from_inner. What crosses the crate line is the decision that fills
each cell – the builders in crate::imports, crate::mixins and
crate::hierarchy – plus this trait, which is how a free function reaches
back for a memoized product without naming the analyzer type.
Two members are load-bearing beyond their signature:
RubySource::forward_owner_relation_factsis the one accessor with no landed precedent. Its body readsTreeSitterAnalyzer::fetch_file_state, whoseArc<FileState>is crate-private to analysis, so it stays there and hands the decoded facts across (the Py-2collect_boundedprecedent).RubySource::all_filesisTreeSitterAnalyzer::all_files, i.e. the analyzed live file set.CodeUnitIndex::analyzed_filesis a different query, so this is spelled out rather than inferred from the supertrait.
Structs§
- Ruby
Semantic Facts - The workspace-wide ancestry and mixin projection every proven method or constant resolution reads. Populated only for a target-scoped scan; the target-free lookup path resolves the same questions forward, per owner.