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

Function inductive_includes_ctors

crates/compile/src/graph.rs:250–295  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

248 let f_name_set = get_expr_references(f, cache);
249 let a_name_set = get_expr_references(a, cache);
250 merge_name_sets(f_name_set, a_name_set)
251 },
252 ExprData::Lam(_, typ, body, ..) | ExprData::ForallE(_, typ, body, ..) => {
253 let typ_name_set = get_expr_references(typ, cache);
254 let body_name_set = get_expr_references(body, cache);
255 merge_name_sets(typ_name_set, body_name_set)
256 },
257 ExprData::LetE(_, typ, value, body, ..) => {
258 let typ_name_set = get_expr_references(typ, cache);
259 let value_name_set = get_expr_references(value, cache);
260 let body_name_set = get_expr_references(body, cache);
261 merge_name_sets(
262 typ_name_set,
263 merge_name_sets(value_name_set, body_name_set),
264 )
265 },
266 ExprData::Mdata(_, expr, _) => get_expr_references(expr, cache),
267 ExprData::Proj(type_name, _, expr, _) => {
268 let mut name_set = get_expr_references(expr, cache);
269 name_set.insert(type_name.clone());
270 name_set
271 },
272 _ => NameSet::default(),
273 };
274 cache.insert(expr, name_set.clone());
275 name_set
276}
277
278#[cfg(test)]
279mod tests {
280 use super::*;
281 use bignat::Nat;
282 use ix_common::env::*;
283
284 fn n(s: &str) -> Name {
285 Name::str(Name::anon(), s.to_string())
286 }
287
288 fn sort0() -> Expr {
289 Expr::sort(Level::zero())
290 }
291
292 fn mk_cv(name: &str) -> ConstantVal {
293 ConstantVal { name: n(name), level_params: vec![], typ: sort0() }
294 }
295
296 #[test]
297 fn empty_env() {
298 let env = Env::default();

Callers

nothing calls this directly

Calls 4

build_ref_graphFunction · 0.85
nFunction · 0.70
mk_cvFunction · 0.70
insertMethod · 0.45

Tested by

no test coverage detected