( self_name: &Name, ci: &LeanCI, kenv: &mut KEnv<Meta>, n2a: &DashMap<Name, Address>, )
| 2761 | }; |
| 2762 | let mut stats = ConvertStats::default(); |
| 2763 | |
| 2764 | // Check if this is a Muts entry (mutual block) — handle differently |
| 2765 | let named_meta = named.meta(); |
| 2766 | if matches!(&named_meta.info, ConstantMetaInfo::Muts { .. }) { |
| 2767 | if let ConstantMetaInfo::Muts { all, .. } = &named_meta.info |
| 2768 | && let Ok(entries) = ingress_muts_block( |
| 2769 | name, |
| 2770 | &named.addr, |
| 2771 | all, |
| 2772 | ixon_env, |
| 2773 | name_map, |
| 2774 | addr_map, |
| 2775 | intern, |
| 2776 | &mut stats, |
| 2777 | ) |
| 2778 | { |
| 2779 | let block_id = entries.first().and_then(|(_, zc)| match zc { |
| 2780 | KConst::Defn { block, .. } |
| 2781 | | KConst::Recr { block, .. } |
| 2782 | | KConst::Indc { block, .. } => Some(block.clone()), |
| 2783 | _ => None, |
| 2784 | }); |
| 2785 | let member_ids: Vec<KId<Meta>> = |
| 2786 | entries.iter().map(|(id, _)| id.clone()).collect(); |
| 2787 | if let Some(bid) = block_id { |
| 2788 | zenv.blocks.insert(bid, member_ids); |
| 2789 | } |
| 2790 | for (id, zc) in entries { |
| 2791 | zenv.insert(id, zc); |
| 2792 | } |
| 2793 | } |
| 2794 | continue; |
| 2795 | } |
| 2796 | |
| 2797 | // Standalone constant (or member of a mutual block handled via Muts) |
| 2798 | // Skip projection wrappers — they're handled by the Muts path |
| 2799 | match &constant.info { |
| 2800 | IxonCI::IPrj(_) | IxonCI::CPrj(_) | IxonCI::RPrj(_) | IxonCI::DPrj(_) => { |
| 2801 | continue; |
| 2802 | }, |
| 2803 | _ => {}, |
| 2804 | } |
| 2805 | |
| 2806 | if let Ok(entries) = ingress_standalone( |
| 2807 | name, |
| 2808 | &named.addr, |
| 2809 | &constant, |
| 2810 | &named_meta, |
| 2811 | ixon_env, |
| 2812 | name_map, |
| 2813 | addr_map, |
| 2814 | intern, |
| 2815 | &mut stats, |
| 2816 | ) { |
| 2817 | for (id, zc) in entries { |
| 2818 | zenv.insert(id, zc); |
| 2819 | } |
| 2820 | } |
no test coverage detected