luaur_code_gen/functions/
forg_prep_xnext_fallback.rs1use core::ffi::c_char;
2
3use luaur_vm::macros::clvalue::clvalue;
4use luaur_vm::macros::lua_g_typeerror::luaG_typeerror;
5use luaur_vm::macros::ttisfunction::ttisfunction;
6use luaur_vm::type_aliases::lua_state::lua_State;
7use luaur_vm::type_aliases::t_value::TValue;
8
9const ITERATE_OVER: *const c_char = b"iterate over\0".as_ptr() as *const c_char;
10
11#[allow(non_snake_case)]
12pub unsafe fn forg_prep_xnext_fallback(L: *mut lua_State, ra: *mut TValue, pc: i32) {
13 if !ttisfunction!(ra as *const TValue) {
14 let cl = clvalue!((*(*L).ci).func as *const TValue);
15 let cl_l = &(*cl).inner.l;
16 (*(*L).ci).savedpc = cl_l.p.as_ref().unwrap().code.add(pc as usize);
17
18 luaG_typeerror!(L, ra as *const TValue, ITERATE_OVER);
19 }
20}
21
22#[no_mangle]
23pub unsafe extern "C" fn forgPrepXnextFallback(L: *mut lua_State, ra: *mut TValue, pc: i32) {
24 forg_prep_xnext_fallback(L, ra, pc);
25}