luaur_analyze_cli/records/
cli_file_resolver.rs1use alloc::string::String;
11use luaur_analysis::records::file_resolver::{FileResolver, FileResolverVtable};
12use luaur_analysis::records::module_info::ModuleInfo;
13use luaur_analysis::records::source_code::SourceCode;
14use luaur_analysis::records::type_check_limits::TypeCheckLimits;
15use luaur_analysis::type_aliases::module_name_file_resolver::ModuleName;
16use luaur_ast::records::ast_expr::AstExpr;
17
18#[repr(C)]
19pub struct CliFileResolver {
20 pub base: FileResolver,
21}
22
23pub(crate) unsafe fn cli_file_resolver_read_source_thunk(
28 this: *mut FileResolver,
29 name: &ModuleName,
30) -> Option<SourceCode> {
31 let this = this as *mut CliFileResolver;
32 (*this).read_source(name)
33}
34
35pub(crate) unsafe fn cli_file_resolver_resolve_module_thunk(
40 this: *mut FileResolver,
41 context: *const ModuleInfo,
42 expr: *mut AstExpr,
43 limits: &TypeCheckLimits,
44) -> Option<ModuleInfo> {
45 let this = this as *mut CliFileResolver;
46 (*this).resolve_module(context, expr, limits)
47}
48
49pub(crate) unsafe fn cli_file_resolver_get_human_readable_module_name_thunk(
54 this: *const FileResolver,
55 name: &ModuleName,
56) -> String {
57 let this = this as *const CliFileResolver;
58 crate::methods::cli_file_resolver_get_human_readable_module_name::cli_file_resolver_get_human_readable_module_name(
59 this, name,
60 )
61}
62
63unsafe fn cli_file_resolver_get_environment_for_module_default(
69 _this: *const FileResolver,
70 _name: &ModuleName,
71) -> Option<String> {
72 None
73}
74
75impl CliFileResolver {
76 pub fn new() -> Self {
77 let vtable = FileResolverVtable {
78 read_source: cli_file_resolver_read_source_thunk,
79 resolve_module: cli_file_resolver_resolve_module_thunk,
80 get_human_readable_module_name: cli_file_resolver_get_human_readable_module_name_thunk,
81 get_environment_for_module: cli_file_resolver_get_environment_for_module_default,
82 };
83
84 CliFileResolver {
85 base: FileResolver {
86 vtable,
87 require_suggester: None,
88 },
89 }
90 }
91}
92
93impl Default for CliFileResolver {
94 fn default() -> Self {
95 Self::new()
96 }
97}