use mago_codex::ttype::union::TUnion;
use crate::plugin::error::PluginError;
pub type HookResult<T> = Result<T, PluginError>;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum HookAction {
#[default]
Continue,
Skip,
}
#[derive(Debug, Clone, PartialEq, Default)]
pub enum ExpressionHookResult {
#[default]
Continue,
Skip,
SkipWithType(TUnion),
}
impl ExpressionHookResult {
#[inline]
#[must_use]
pub fn should_skip(&self) -> bool {
!matches!(self, ExpressionHookResult::Continue)
}
#[inline]
#[must_use]
pub fn take_type(self) -> Option<TUnion> {
match self {
ExpressionHookResult::SkipWithType(ty) => Some(ty),
_ => None,
}
}
}