luaur_web/methods/
demo_file_resolver_resolve_module.rs1use crate::records::demo_file_resolver::DemoFileResolver;
14use core::ffi::CStr;
15use luaur_analysis::records::module_info::ModuleInfo;
16use luaur_analysis::records::type_check_limits::TypeCheckLimits;
17use luaur_analysis::type_aliases::module_name_file_resolver::ModuleName;
18use luaur_ast::records::ast_expr::AstExpr;
19use luaur_ast::records::ast_expr_global::AstExprGlobal;
20use luaur_ast::records::ast_node::AstNode;
21use luaur_ast::rtti::ast_node_as;
22
23impl DemoFileResolver {
24 pub fn resolve_module(
25 &self,
26 _context: *const ModuleInfo,
27 expr: *mut AstExpr,
28 _limits: &TypeCheckLimits,
29 ) -> Option<ModuleInfo> {
30 let g = unsafe { ast_node_as::<AstExprGlobal>(expr as *mut AstNode) };
32 if g.is_null() {
33 return None;
34 }
35
36 let value = unsafe { (*g).name.value };
39 let name: ModuleName = if value.is_null() {
40 ModuleName::default()
41 } else {
42 unsafe { CStr::from_ptr(value) }
43 .to_string_lossy()
44 .into_owned()
45 };
46
47 Some(ModuleInfo {
48 name,
49 optional: false,
50 })
51 }
52}