luaur_analysis/records/
source_node.rs1use crate::type_aliases::module_name_file_resolver::ModuleName;
2use alloc::string::String;
3use alloc::vec::Vec;
4use luaur_ast::records::location::Location;
5use luaur_common::records::dense_hash_set::DenseHashSet;
6
7#[derive(Debug, Clone, PartialEq)]
8pub struct SourceNode {
9 pub name: ModuleName,
10 pub human_readable_name: String,
11 pub require_set: DenseHashSet<ModuleName>,
12 pub require_locations: Vec<(ModuleName, Location)>,
13 pub dependents: DenseHashSet<ModuleName>,
14 pub dirty_source_module: bool,
15 pub dirty_module: bool,
16 pub dirty_module_for_autocomplete: bool,
17 pub invalid_module_dependency: bool,
18 pub invalid_module_dependency_for_autocomplete: bool,
19 pub autocomplete_limits_mult: f64,
20}
21
22impl SourceNode {
23 pub fn has_dirty_source_module(&self) -> bool {
24 self.dirty_source_module
25 }
26
27 pub fn has_dirty_module(&self, for_autocomplete: bool) -> bool {
28 if for_autocomplete {
29 self.dirty_module_for_autocomplete
30 } else {
31 self.dirty_module
32 }
33 }
34
35 pub fn has_invalid_module_dependency(&self, for_autocomplete: bool) -> bool {
36 if for_autocomplete {
37 self.invalid_module_dependency_for_autocomplete
38 } else {
39 self.invalid_module_dependency
40 }
41 }
42
43 pub fn set_invalid_module_dependency(&mut self, value: bool, for_autocomplete: bool) {
44 if for_autocomplete {
45 self.invalid_module_dependency_for_autocomplete = value;
46 } else {
47 self.invalid_module_dependency = value;
48 }
49 }
50}