luaur_bytecode/methods/
bc_inst_helper_from.rs1use crate::records::bc_function::BcFunction;
2use crate::records::bc_inst::BcInst;
3use crate::records::bc_inst_helper::BcInstHelper;
4use crate::records::bc_ref::BcRef;
5use luaur_common::macros::luau_assert::LUAU_ASSERT;
6
7pub trait BcInstType {
8 const OPCODE: i32;
9}
10
11impl<'a> BcInstHelper<'a> {
12 pub fn from<T>(graph: &'a mut BcFunction, inst: BcRef<'a, BcInst>) -> T
13 where
14 T: BcInstType + From<(&'a mut BcFunction, BcRef<'a, BcInst>)>,
15 {
16 LUAU_ASSERT!(inst.operator_deref().op as i32 == T::OPCODE);
17 T::from((graph, inst))
18 }
19}