use crate::vm_fault::VmFault; use prometeu_bytecode::{TRAP_TYPE, Value}; pub fn expect_bounded(args: &[Value], idx: usize) -> Result { args.get(idx) .and_then(|v| match v { Value::Bounded(b) => Some(*b), _ => None, }) .ok_or_else(|| VmFault::Trap(TRAP_TYPE, format!("Expected bounded at index {}", idx))) } pub fn expect_int(args: &[Value], idx: usize) -> Result { args.get(idx) .and_then(|v| v.as_integer()) .ok_or_else(|| VmFault::Trap(TRAP_TYPE, format!("Expected integer at index {}", idx))) } pub fn expect_bool(args: &[Value], idx: usize) -> Result { args.get(idx) .and_then(|v| match v { Value::Boolean(b) => Some(*b), _ => None, }) .ok_or_else(|| VmFault::Trap(TRAP_TYPE, format!("Expected boolean at index {}", idx))) }