use crate::records::demo_file_resolver::DemoFileResolver;
use core::ffi::CStr;
use luaur_analysis::records::module_info::ModuleInfo;
use luaur_analysis::records::type_check_limits::TypeCheckLimits;
use luaur_analysis::type_aliases::module_name_file_resolver::ModuleName;
use luaur_ast::records::ast_expr::AstExpr;
use luaur_ast::records::ast_expr_global::AstExprGlobal;
use luaur_ast::records::ast_node::AstNode;
use luaur_ast::rtti::ast_node_as;
impl DemoFileResolver {
pub fn resolve_module(
&self,
_context: *const ModuleInfo,
expr: *mut AstExpr,
_limits: &TypeCheckLimits,
) -> Option<ModuleInfo> {
let g = unsafe { ast_node_as::<AstExprGlobal>(expr as *mut AstNode) };
if g.is_null() {
return None;
}
let value = unsafe { (*g).name.value };
let name: ModuleName = if value.is_null() {
ModuleName::default()
} else {
unsafe { CStr::from_ptr(value) }
.to_string_lossy()
.into_owned()
};
Some(ModuleInfo {
name,
optional: false,
})
}
}