use address_names_exists::validate_address_names_exists;
use address_names_unique::validate_address_names_unique;
use crate::Application;
mod address_names_exists;
mod address_names_unique;
mod relative_addressing;
pub trait Validator {
fn validate(&self) -> AssemblerResult<()>;
}
pub type AssemblerResult<T> = Result<T, Error>;
#[derive(Debug)]
pub enum Error {
AddressNameUnknown(String),
AddressNameNotUnique(String),
InternalCompilerError,
}
impl Validator for Application {
fn validate(&self) -> AssemblerResult<()> {
validate_address_names_exists(self)?;
validate_address_names_unique(self)?;
Ok(())
}
}