Skip to main content

luaur_analysis/records/
source_node.rs

1use 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}