Skip to main content

luaur_bytecode/macros/
vconst.rs

1#[allow(unused_macros)]
2macro_rules! VCONST {
3    (@kind Nil) => {
4        crate::enums::r#type::Type::Type_Nil
5    };
6    (@kind Boolean) => {
7        crate::enums::r#type::Type::Type_Boolean
8    };
9    (@kind Number) => {
10        crate::enums::r#type::Type::Type_Number
11    };
12    (@kind Integer) => {
13        crate::enums::r#type::Type::Type_Integer
14    };
15    (@kind Vector) => {
16        crate::enums::r#type::Type::Type_Vector
17    };
18    (@kind String) => {
19        crate::enums::r#type::Type::Type_String
20    };
21    (@kind Import) => {
22        crate::enums::r#type::Type::Type_Import
23    };
24    (@kind Table) => {
25        crate::enums::r#type::Type::Type_Table
26    };
27    (@kind Closure) => {
28        crate::enums::r#type::Type::Type_Closure
29    };
30    (@kind ClassShape) => {
31        crate::enums::r#type::Type::Type_ClassShape
32    };
33    ($v:expr, $kind:ident, $constants:expr) => {
34        LUAU_ASSERT!(
35            ($v as usize) < $constants.len()
36                && $constants[$v as usize].r#type == VCONST!(@kind $kind)
37        )
38    };
39}
40
41pub(crate) use VCONST;