Skip to main content

luaur_compiler/functions/
assign_mutable.rs

1use luaur_ast::records::ast_name::AstName;
2use luaur_ast::records::ast_name_table::AstNameTable;
3
4use luaur_common::records::dense_hash_map::DenseHashMap;
5
6use crate::enums::global::Global;
7
8#[inline]
9pub fn assign_mutable(
10    globals: &mut DenseHashMap<AstName, Global>,
11    names: &AstNameTable,
12    mutable_globals: *const *const core::ffi::c_char,
13) {
14    let name = names.get(c"_G".as_ptr());
15    if !name.value.is_null() {
16        *globals.get_or_insert(name) = Global::Mutable;
17    }
18
19    if mutable_globals.is_null() {
20        return;
21    }
22
23    let mut ptr = mutable_globals;
24    unsafe {
25        while !(*ptr).is_null() {
26            let name = names.get(*ptr);
27            if !name.value.is_null() {
28                *globals.get_or_insert(name) = Global::Mutable;
29            }
30            ptr = ptr.add(1);
31        }
32    }
33}