MCPcopy Create free account
hub / github.com/argumentcomputer/ix / lean_const_to_kconst

Function lean_const_to_kconst

crates/kernel/src/ingress.rs:2763–2919  ·  view source on GitHub ↗
(
  self_name: &Name,
  ci: &LeanCI,
  kenv: &mut KEnv<Meta>,
  n2a: &DashMap<Name, Address>,
)

Source from the content-addressed store, hash-verified

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 }

Callers 1

lean_ingressFunction · 0.85

Calls 8

lean_all_idsFunction · 0.85
lean_block_idFunction · 0.85
leon_addr_ofFunction · 0.85
lean_member_idxFunction · 0.85
cloneMethod · 0.45
lenMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected