Expand description
Compiles supplied modules into immutable factories without filesystem access or execution.
use adam_lang::{ModuleCompiler, ModulePath, ModuleSet, TypeRegistry};
let path: ModulePath = "constraints".parse()?;
let mut modules = ModuleSet::new();
modules.insert_source(path.clone(), "constraints.adm2", "sheet empty() {}")?;
modules.check_resolution().map_err(|errors| errors.into_iter().next().unwrap())?;
let compiled = ModuleCompiler::new(TypeRegistry::new(), cel_parser::OpLookup::new())
.compile(modules).map_err(|mut errors| errors.remove(0))?;
assert!(compiled.template(&path, "empty").is_some());Structs§
- Compiled
Modules - Owns resolved immutable exports and explicitly selectable prepared roots.
- Module
Compiler - Owns the type and operation environments for one collection-wide compilation.
- Module
Path - Identifies a supplied module by nonempty,
::-separated identifiers. - Module
Set - Owns parsed and native declarations under explicit module paths.
- Prepared
Root - Owns a lowered root and its public-name assembly inputs, without constructing it.
- Root
Cell - Retains one root’s own declaration, never an included private name.
Functions§
- check_
module - Checks every registered definition using its declaring module and real source owner.