Skip to main content

luaur_vm/functions/
lua_g_missingmembererror.rs

1use core::ffi::CStr;
2
3use crate::functions::lua_t_objtypename::lua_t_objtypename;
4use crate::macros::getstr::getstr;
5use crate::macros::lua_g_runerror::lua_g_runerror;
6use crate::macros::tsvalue::tsvalue;
7use crate::macros::ttisstring::ttisstring;
8use crate::type_aliases::lua_state::lua_State;
9use crate::type_aliases::t_value::TValue;
10
11#[allow(non_snake_case)]
12pub unsafe fn luaG_missingmembererror(
13    L: *mut lua_State,
14    p1: *const TValue,
15    p2: *const TValue,
16) -> ! {
17    if !ttisstring!(p2) {
18        let t1 = lua_t_objtypename(L, p1);
19        let t2 = lua_t_objtypename(L, p2);
20        lua_g_runerror!(
21            L,
22            "cannot index {} with a {}",
23            CStr::from_ptr(t1).to_string_lossy(),
24            CStr::from_ptr(t2).to_string_lossy(),
25        )
26    } else {
27        let t1 = lua_t_objtypename(L, p1);
28        let key = tsvalue!(p2);
29        lua_g_runerror!(
30            L,
31            "this {} does not have a key named '{}'",
32            CStr::from_ptr(t1).to_string_lossy(),
33            CStr::from_ptr(getstr(key)).to_string_lossy(),
34        )
35    }
36}
37
38#[allow(non_snake_case)]
39pub unsafe fn lua_g_missingmembererror(
40    L: *mut lua_State,
41    p1: *const TValue,
42    p2: *const TValue,
43) -> ! {
44    luaG_missingmembererror(L, p1, p2)
45}