Skip to main content

luaur_vm/functions/
lua_l_argerror_l.rs

1use crate::functions::currfuncname::currfuncname;
2use crate::functions::lua_l_error_l::lua_l_error_l;
3use crate::type_aliases::lua_state::lua_State;
4use core::ffi::c_int;
5
6#[no_mangle]
7pub unsafe fn lua_l_argerror_l(L: *mut lua_State, narg: c_int, extramsg: &str) -> ! {
8    let fname = currfuncname(L);
9
10    if !fname.is_null() {
11        let fname = core::ffi::CStr::from_ptr(fname).to_string_lossy();
12        lua_l_error_l(
13            L,
14            c"invalid argument #%d to '%s' (%s)".as_ptr(),
15            format_args!("invalid argument #{} to '{}' ({})", narg, fname, extramsg),
16        );
17    } else {
18        lua_l_error_l(
19            L,
20            c"invalid argument #%d (%s)".as_ptr(),
21            format_args!("invalid argument #{} ({})", narg, extramsg),
22        );
23    }
24
25    core::hint::unreachable_unchecked()
26}
27
28#[allow(non_snake_case)]
29pub fn luaL_argerrorL(L: *mut lua_State, narg: c_int, extramsg: &str) -> ! {
30    unsafe { lua_l_argerror_l(L, narg, extramsg) }
31}