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

Method ctx

crates/compile/src/mutual.rs:176–191  ·  view source on GitHub ↗

Builds a [`MutCtx`] from grouped mutual constant classes, assigning indices to types first and then to constructors.

(classes: &[Vec<&MutConst>])

Source from the content-addressed store, hash-verified

174 /// Builds a [`MutCtx`] from grouped mutual constant classes, assigning
175 /// indices to types first and then to constructors.
176 pub fn ctx(classes: &[Vec<&MutConst>]) -> MutCtx {
177 let mut mut_ctx = FxHashMap::default();
178 let mut i = classes.len();
179 for (j, consts) in classes.iter().enumerate() {
180 let mut max_ctors = 0;
181 for cnst in consts {
182 mut_ctx.insert(cnst.name(), Nat(j.into()));
183 max_ctors = usize::max(max_ctors, cnst.ctors().len());
184 for (cidx, c) in cnst.ctors().iter().enumerate() {
185 mut_ctx.insert(c.cnst.name.clone(), Nat((i + cidx).into()));
186 }
187 }
188 i += max_ctors;
189 }
190 mut_ctx
191 }
192}
193
194#[cfg(test)]

Callers

nothing calls this directly

Calls 6

ctorsMethod · 0.80
lenMethod · 0.45
iterMethod · 0.45
insertMethod · 0.45
nameMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected