( const_name: &Name, addr: &Address, constant: &Constant, meta: &ConstantMeta, ixon_env: &IxonEnv, names: &FxHashMap<Address, Name>, name_to_addr: &FxHashMap<Name, Address>, intern: &m
| 1627 | )?; |
| 1628 | let value = ingress_expr( |
| 1629 | &def.value, |
| 1630 | value_root, |
| 1631 | &ctx, |
| 1632 | intern, |
| 1633 | ixon_env, |
| 1634 | &mut cache, |
| 1635 | &mut univ_cache, |
| 1636 | stats, |
| 1637 | )?; |
| 1638 | let lean_all = resolve_all(&all_addrs, names, name_to_addr)?; |
| 1639 | |
| 1640 | let name = resolve_name( |
| 1641 | match &meta.info { |
| 1642 | ConstantMetaInfo::Def { name, .. } => name, |
| 1643 | _ => &self_id.addr, |
| 1644 | }, |
| 1645 | names, |
| 1646 | ); |
| 1647 | |
| 1648 | Ok(vec![( |
| 1649 | self_id, |
| 1650 | KConst::Defn { |
| 1651 | name: M::meta_field(name), |
| 1652 | level_params: M::meta_field(level_params), |
| 1653 | kind: def.kind, |
| 1654 | safety, |
| 1655 | hints, |
| 1656 | lvls: def.lvls, |
| 1657 | ty: typ, |
| 1658 | val: value, |
| 1659 | lean_all: M::meta_field(lean_all), |
| 1660 | block, |
| 1661 | }, |
| 1662 | )]) |
| 1663 | } |
| 1664 | |
| 1665 | #[allow(clippy::too_many_arguments)] |
| 1666 | fn ingress_recursor<M: KernelMode>( |
| 1667 | rec: &ixon::constant::Recursor, |
| 1668 | self_id: KId<M>, |
| 1669 | meta: &ConstantMeta, |
| 1670 | ixon_env: &IxonEnv, |
| 1671 | names: &FxHashMap<Address, Name>, |
| 1672 | name_to_addr: &FxHashMap<Name, Address>, |
| 1673 | sharing: &[Arc<IxonExpr>], |
| 1674 | refs: &[Address], |
| 1675 | univs: &[Arc<IxonUniv>], |
| 1676 | block: KId<M>, |
| 1677 | intern: &mut InternTable<M>, |
| 1678 | stats: &mut ConvertStats, |
| 1679 | // Anon callers compute `mut_ctx` structurally; Meta callers pass |
| 1680 | // `None` to fall back to the metadata-derived `build_mut_ctx`. |
| 1681 | mut_ctx_override: Option<Vec<KId<M>>>, |
| 1682 | ) -> Result<Vec<(KId<M>, KConst<M>)>, String> { |
| 1683 | let mut cache: ExprCache<M> = FxHashMap::default(); |
| 1684 | let mut univ_cache: UnivCache<M> = FxHashMap::default(); |
| 1685 | let (level_params, arena, type_root, rule_roots, rule_ctor_addrs, all_addrs) = |
| 1686 | match &meta.info { |
no test coverage detected