Skip to main content

luaur_analyze_cli/records/
cli_config_resolver.rs

1//! Node: `cxx:Record:Luau.Analyze.CLI:CLI/src/Analyze.cpp:231:cli_config_resolver`
2//! Source: `CLI/src/Analyze.cpp`
3//! Graph edges:
4//! - declared_by: source_file CLI/src/Analyze.cpp
5//! - source_includes:
6//!   - includes -> source_file Analysis/include/Luau/BuiltinDefinitions.h
7//!   - includes -> source_file Config/include/Luau/Config.h
8//!   - includes -> source_file Analysis/include/Luau/Frontend.h
9//!   - includes -> source_file Config/include/Luau/LuauConfig.h
10//!   - includes -> source_file Analysis/include/Luau/ModuleResolver.h
11//!   - includes -> source_file Ast/include/Luau/PrettyPrinter.h
12//!   - includes -> source_file Common/include/Luau/StringUtils.h
13//!   - includes -> source_file Common/include/Luau/TimeTrace.h
14//!   - includes -> source_file Analysis/include/Luau/TypeAttach.h
15//!   - includes -> source_file Analysis/include/Luau/TypeCheckLimits.h
16//!   - includes -> source_file Analysis/include/Luau/TypeInfer.h
17//!   - includes -> source_file CLI/include/Luau/AnalyzeRequirer.h
18//!   - includes -> source_file CLI/include/Luau/FileUtils.h
19//!   - includes -> source_file CLI/include/Luau/Flags.h
20//!   - includes -> source_file Require/include/Luau/RequireNavigator.h
21//!   - includes -> source_file VM/include/lua.h
22//!   - includes -> source_file VM/include/lualib.h
23//! - incoming:
24//!   - declares <- source_file CLI/src/Analyze.cpp
25//!   - type_ref <- function main (CLI/src/Analyze.cpp)
26//!   - type_ref <- method CliConfigResolver::CliConfigResolver (CLI/src/Analyze.cpp)
27//!   - type_ref <- method CliConfigResolver::getConfig (CLI/src/Analyze.cpp)
28//!   - type_ref <- method CliConfigResolver::readConfigRec (CLI/src/Analyze.cpp)
29//! - outgoing:
30//!   - type_ref -> method CliConfigResolver::CliConfigResolver (CLI/src/Analyze.cpp)
31//!   - type_ref -> record Config (Config/include/Luau/Config.h)
32//!   - translates_to -> rust_item CliConfigResolver
33
34use alloc::string::String;
35use alloc::vec::Vec;
36use luaur_analysis::records::config_resolver::ConfigResolver;
37use luaur_config::records::config::Config;
38use std::collections::HashMap;
39
40/// Port of `struct CliConfigResolver : Luau::ConfigResolver` (`CLI/src/Analyze.cpp:231-321`).
41///
42/// Like the analysis `ConfigResolver` (a struct with a fn-pointer vtable slot for
43/// the single pure virtual `getConfig`), this concrete subclass is `#[repr(C)]`
44/// with `base: ConfigResolver` first so that a `*const ConfigResolver` (the vtable
45/// receiver) can be cast back to `*const CliConfigResolver`.
46///
47/// C++ members:
48/// - `Luau::Config defaultConfig;`
49/// - `mutable std::unordered_map<std::string, Luau::Config> configCache;`
50/// - `mutable std::vector<std::pair<std::string, std::string>> configErrors;`
51#[repr(C)]
52#[derive(Debug)]
53pub struct CliConfigResolver {
54    pub base: ConfigResolver,
55    pub default_config: Config,
56    pub config_cache: HashMap<String, Config>,
57    pub config_errors: Vec<(String, String)>,
58}