Skip to main content

luaur_analysis/records/
build_queue_item.rs

1use crate::records::frontend::FrontendStats;
2use crate::records::frontend_options::FrontendOptions;
3use crate::records::internal_compiler_error::InternalCompilerError;
4use crate::records::require_cycle::RequireCycle;
5use crate::records::source_module::SourceModule;
6use crate::records::source_node::SourceNode;
7use crate::type_aliases::module_name_file_resolver::ModuleName;
8use crate::type_aliases::module_ptr_module_resolver::ModulePtr;
9use crate::type_aliases::scope_ptr_type::ScopePtr;
10use alloc::sync::Arc;
11use alloc::vec::Vec;
12use luaur_config::records::config::Config;
13
14#[derive(Debug, Clone)]
15pub struct BuildQueueItem {
16    pub name: ModuleName,
17    pub human_readable_name: ModuleName,
18    pub source_node: Arc<SourceNode>,
19    pub source_module: Arc<SourceModule>,
20    pub config: Config,
21    pub environment_scope: ScopePtr,
22    pub require_cycles: Vec<RequireCycle>,
23    pub options: FrontendOptions,
24    pub record_json_log: bool,
25    pub reverse_deps: Vec<usize>,
26    pub dirty_dependencies: i32,
27    pub processing: bool,
28    // Result
29    // C++: `std::exception_ptr exception;` which here only ever holds a
30    // `Luau::InternalCompilerError` (a recursion/internal compiler error). It is
31    // used as a presence flag (`if (item.exception)`) and later rethrown in
32    // `recordItemResult`. Modeled as an `Option` carrying the caught error.
33    pub exception: Option<InternalCompilerError>,
34    pub module: ModulePtr,
35    pub stats: FrontendStats,
36}