Skip to main content

luaur_analysis/records/
frontend_module_resolver.rs

1//! Node: `cxx:Record:Luau.Analysis:Analysis/include/Luau/Frontend.h:133:frontend_module_resolver`
2//! Source: `Analysis/include/Luau/Frontend.h`
3//!
4//! C++ `struct FrontendModuleResolver : ModuleResolver` (Frontend.h:133-151).
5//! The base `ModuleResolver` interface is pure-virtual; its overrides live as
6//! `FrontendModuleResolver` methods. The data members are ported here.
7
8use crate::records::frontend::Frontend;
9use crate::records::module_resolver::ModuleResolver;
10use crate::type_aliases::module_name_type::ModuleName;
11use crate::type_aliases::module_ptr_module_resolver::ModulePtr;
12use std::collections::HashMap;
13use std::sync::Mutex;
14
15#[repr(C)]
16pub struct FrontendModuleResolver {
17    pub base: ModuleResolver,
18
19    /// `Frontend* frontend;`
20    pub frontend: *mut Frontend,
21
22    /// `mutable std::mutex moduleMutex;`
23    pub module_mutex: Mutex<()>,
24
25    /// `std::unordered_map<ModuleName, ModulePtr> modules;`
26    pub modules: HashMap<ModuleName, ModulePtr>,
27}
28
29impl core::fmt::Debug for FrontendModuleResolver {
30    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
31        f.debug_struct("FrontendModuleResolver")
32            .field("modules", &self.modules)
33            .finish_non_exhaustive()
34    }
35}