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.