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

Function resolve_kvmap

crates/ixon/src/metadata.rs:313–354  ·  view source on GitHub ↗

Resolve an Ixon KVMap (address-based) to Lean-level MData (name/value pairs). Used by kernel ingress to convert expression metadata from the content-addressed Ixon representation to the named kernel representation.

(
  kvm: &KVMap,
  ixon_env: &super::env::Env,
)

Source from the content-addressed store, hash-verified

311 },
312 I::Axio { name, lvls, arena: a, .. }
313 | I::Quot { name, lvls, arena: a, .. } => {
314 names.push(name.clone());
315 names.extend(lvls.iter().cloned());
316 arena = Some(a);
317 },
318 I::Indc { name, lvls, ctors, all, ctx, arena: a, .. } => {
319 names.push(name.clone());
320 names.extend(lvls.iter().cloned());
321 names.extend(ctors.iter().cloned());
322 names.extend(all.iter().cloned());
323 names.extend(ctx.iter().cloned());
324 arena = Some(a);
325 },
326 I::Ctor { name, lvls, induct, arena: a, .. } => {
327 names.push(name.clone());
328 names.extend(lvls.iter().cloned());
329 names.push(induct.clone());
330 arena = Some(a);
331 },
332 I::Rec { name, lvls, rules, all, ctx, arena: a, .. } => {
333 names.push(name.clone());
334 names.extend(lvls.iter().cloned());
335 names.extend(rules.iter().cloned());
336 names.extend(all.iter().cloned());
337 names.extend(ctx.iter().cloned());
338 arena = Some(a);
339 },
340 I::Muts { all, .. } => {
341 for class in all {
342 names.extend(class.iter().cloned());
343 }
344 },
345 }
346 if let Some(a) = arena {
347 for node in &a.nodes {
348 match node {
349 ExprMetaData::Leaf | ExprMetaData::App { .. } => {},
350 ExprMetaData::Binder { name, .. }
351 | ExprMetaData::LetBinder { name, .. }
352 | ExprMetaData::Ref { name }
353 | ExprMetaData::CallSite { name, .. } => names.push(name.clone()),
354 ExprMetaData::Prj { struct_name, .. } => {
355 names.push(struct_name.clone());
356 },
357 ExprMetaData::Mdata { mdata, .. } => {

Callers 1

ingress_exprFunction · 0.85

Calls 6

deser_intFunction · 0.85
deser_syntaxFunction · 0.85
as_sliceMethod · 0.80
iterMethod · 0.45
get_nameMethod · 0.45
get_blobMethod · 0.45

Tested by

no test coverage detected