use crate::instr::Builtin;
#[derive(Debug)]
pub(super) enum ExpDesc {
Prefix(PrefixExp),
Vararg,
Other,
}
#[derive(Clone, Debug)]
pub(super) enum PrefixExp {
Place(PlaceExp),
FunctionCall(u8),
Parenthesized,
}
#[derive(Clone, Debug)]
pub(super) enum PlaceExp {
Local(u8),
Upvalue(u8),
Global(u8),
Builtin(Builtin),
TableIndex,
FieldAccess(u8),
}
impl From<PrefixExp> for ExpDesc {
fn from(exp: PrefixExp) -> Self {
Self::Prefix(exp)
}
}
impl From<PlaceExp> for PrefixExp {
fn from(exp: PlaceExp) -> Self {
Self::Place(exp)
}
}