#![allow(dead_code)]
mod constraint;
mod gather;
mod instruct;
mod instructions;
mod priv_prelude;
mod solve;
use crate::{engine_threading::*, language::ty, CompileResult};
use priv_prelude::*;
pub(super) fn monomorphize(engines: Engines<'_>, module: &mut ty::TyModule) -> CompileResult<()> {
CompileResult::with_handler(|h| {
let constraints = gather_constraints(engines, h, module)?;
let mut solver = Solver::new(engines);
solver.solve(h, constraints)?;
let instructions = solver.into_instructions();
apply_instructions(engines, h, instructions, module)?;
Ok(())
})
}