use crate::{exceptions::MontyException, import::ModuleFile, object::MontyObject};
#[derive(Debug)]
pub enum NameLookupResult {
Value(MontyObject),
Undefined,
Error(MontyException),
}
impl From<MontyObject> for NameLookupResult {
fn from(value: MontyObject) -> Self {
Self::Value(value)
}
}
impl From<Option<MontyObject>> for NameLookupResult {
fn from(value: Option<MontyObject>) -> Self {
value.map_or(Self::Undefined, Self::Value)
}
}
impl From<MontyException> for NameLookupResult {
fn from(exception: MontyException) -> Self {
Self::Error(exception)
}
}
#[derive(Debug)]
pub enum ExtFunctionResult {
Return(MontyObject),
Error(MontyException),
Future(u32),
NotFound(String),
ModuleFile(ModuleFile),
}
impl From<MontyObject> for ExtFunctionResult {
fn from(value: MontyObject) -> Self {
Self::Return(value)
}
}
impl From<MontyException> for ExtFunctionResult {
fn from(exception: MontyException) -> Self {
Self::Error(exception)
}
}