Skip to main content

Module module

Module module 

Source
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§

CompiledModules
Owns resolved immutable exports and explicitly selectable prepared roots.
ModuleCompiler
Owns the type and operation environments for one collection-wide compilation.
ModulePath
Identifies a supplied module by nonempty, ::-separated identifiers.
ModuleSet
Owns parsed and native declarations under explicit module paths.
PreparedRoot
Owns a lowered root and its public-name assembly inputs, without constructing it.
RootCell
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.