Skip to main content

declared_effect_blast_radius

Function declared_effect_blast_radius 

Source
pub fn declared_effect_blast_radius(
    decls: &[(String, EffectDecl)],
) -> HashMap<EffectCategory, Vec<(String, usize)>>
Expand description

Per-declarer transitive blast radius, derived entirely from the stored transitive data written by propagate_transitive — no call-graph reachability is recomputed here.

For each effect category E declared by at least one symbol, and each declarer S of E, the blast radius of S is the number of distinct other symbols whose stored EffectDecl.transitive carries E through a via chain that reaches S. The via field on a transitive entry names the immediate callee(s) that surfaced the effect, so walking “who lists X in their via for E” upward from the declarer reconstructs exactly the propagation paths propagate_transitive recorded.

Returns, per category, the declarers as (symbol_id, blast_radius) sorted by blast radius descending (ties broken by symbol_id ascending) so callers can take the top-N directly.