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}