Skip to content

Commit 2a51ecd

Browse files
committed
clean code
1 parent caf9994 commit 2a51ecd

File tree

9 files changed

+105
-26
lines changed

9 files changed

+105
-26
lines changed

crates/emmylua_code_analysis/src/compilation/analyzer/lua/module.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ pub fn analyze_chunk_return(analyzer: &mut LuaAnalyzer, chunk: LuaChunk) -> Opti
2626
}
2727
};
2828

29-
let property_owner_id = get_property_owner_id(analyzer, expr.clone());
29+
let semantic_id = get_semantic_id(analyzer, expr.clone());
3030

3131
let module_info = analyzer
3232
.db
@@ -41,7 +41,7 @@ pub fn analyze_chunk_return(analyzer: &mut LuaAnalyzer, chunk: LuaChunk) -> Opti
4141
module_info.export_type = Some(expr_type);
4242
}
4343
}
44-
module_info.property_owner_id = property_owner_id;
44+
module_info.semantic_id = semantic_id;
4545
break;
4646
}
4747
// Other cases are stupid code
@@ -52,7 +52,7 @@ pub fn analyze_chunk_return(analyzer: &mut LuaAnalyzer, chunk: LuaChunk) -> Opti
5252
Some(())
5353
}
5454

55-
fn get_property_owner_id(analyzer: &LuaAnalyzer, expr: LuaExpr) -> Option<LuaSemanticDeclId> {
55+
fn get_semantic_id(analyzer: &LuaAnalyzer, expr: LuaExpr) -> Option<LuaSemanticDeclId> {
5656
match expr {
5757
LuaExpr::NameExpr(name_expr) => {
5858
let name = name_expr.get_name_text()?;
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
use std::collections::HashMap;
2+
3+
use crate::{LuaMemberIndexItem, LuaMemberKey};
4+
5+
#[allow(unused)]
6+
#[derive(Debug, Clone)]
7+
pub struct LuaOwnerMembers {
8+
members: HashMap<LuaMemberKey, LuaMemberIndexItem>,
9+
resolve_state: OwnerMemberStatus,
10+
}
11+
12+
#[allow(unused)]
13+
impl LuaOwnerMembers {
14+
pub fn new() -> Self {
15+
Self {
16+
members: HashMap::new(),
17+
resolve_state: OwnerMemberStatus::UnResolved,
18+
}
19+
}
20+
21+
pub fn add_member(&mut self, key: LuaMemberKey, item: LuaMemberIndexItem) {
22+
self.members.insert(key, item);
23+
}
24+
25+
pub fn get_member(&self, key: &LuaMemberKey) -> Option<&LuaMemberIndexItem> {
26+
self.members.get(key)
27+
}
28+
29+
pub fn contains_member(&self, key: &LuaMemberKey) -> bool {
30+
self.members.contains_key(key)
31+
}
32+
33+
pub fn get_member_len(&self) -> usize {
34+
self.members.len()
35+
}
36+
37+
pub fn get_member_mut(&mut self, key: &LuaMemberKey) -> Option<&mut LuaMemberIndexItem> {
38+
self.members.get_mut(key)
39+
}
40+
41+
pub fn get_member_items(&self) -> impl Iterator<Item = &LuaMemberIndexItem> {
42+
self.members.values()
43+
}
44+
45+
pub fn iter_mut(&mut self) -> impl Iterator<Item = (&LuaMemberKey, &mut LuaMemberIndexItem)> {
46+
self.members.iter_mut()
47+
}
48+
49+
pub fn remove_member(&mut self, key: &LuaMemberKey) -> Option<LuaMemberIndexItem> {
50+
self.members.remove(key)
51+
}
52+
53+
pub fn is_empty(&self) -> bool {
54+
self.members.is_empty()
55+
}
56+
57+
pub fn set_resolved(&mut self) {
58+
self.resolve_state = OwnerMemberStatus::Resolved;
59+
}
60+
61+
pub fn set_unresolved(&mut self) {
62+
self.resolve_state = OwnerMemberStatus::UnResolved;
63+
}
64+
65+
pub fn is_resolved(&self) -> bool {
66+
matches!(self.resolve_state, OwnerMemberStatus::Resolved)
67+
}
68+
}
69+
70+
#[derive(Debug, Clone, PartialEq, Eq)]
71+
pub enum OwnerMemberStatus {
72+
UnResolved,
73+
Resolved,
74+
}

crates/emmylua_code_analysis/src/db_index/member/mod.rs

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ mod lua_member;
22
mod lua_member_feature;
33
mod lua_member_item;
44
mod lua_member_owner;
5+
mod lua_owner_members;
56

67
use std::collections::{HashMap, HashSet};
78

89
use super::traits::LuaIndex;
9-
use crate::FileId;
10+
use crate::{db_index::member::lua_owner_members::LuaOwnerMembers, FileId};
1011
pub use lua_member::{LuaMember, LuaMemberId, LuaMemberKey};
1112
pub use lua_member_feature::LuaMemberFeature;
1213
pub use lua_member_item::LuaMemberIndexItem;
@@ -16,7 +17,7 @@ pub use lua_member_owner::LuaMemberOwner;
1617
pub struct LuaMemberIndex {
1718
members: HashMap<LuaMemberId, LuaMember>,
1819
in_filed: HashMap<FileId, HashSet<MemberOrOwner>>,
19-
owner_members: HashMap<LuaMemberOwner, HashMap<LuaMemberKey, LuaMemberIndexItem>>,
20+
owner_members: HashMap<LuaMemberOwner, LuaOwnerMembers>,
2021
member_current_owner: HashMap<LuaMemberId, LuaMemberOwner>,
2122
}
2223

@@ -63,9 +64,9 @@ impl LuaMemberIndex {
6364
let member_map = self
6465
.owner_members
6566
.entry(owner.clone())
66-
.or_insert_with(HashMap::new);
67+
.or_insert_with(LuaOwnerMembers::new);
6768
if feature.is_decl() {
68-
if let Some(item) = member_map.get_mut(&key) {
69+
if let Some(item) = member_map.get_member_mut(&key) {
6970
match item {
7071
LuaMemberIndexItem::One(old_id) => {
7172
if old_id != &id {
@@ -80,15 +81,15 @@ impl LuaMemberIndex {
8081
}
8182
}
8283
} else {
83-
member_map.insert(key.clone(), LuaMemberIndexItem::One(id));
84+
member_map.add_member(key.clone(), LuaMemberIndexItem::One(id));
8485
}
8586
} else {
86-
if !member_map.contains_key(&key) {
87-
member_map.insert(key, LuaMemberIndexItem::One(id));
87+
if !member_map.contains_member(&key) {
88+
member_map.add_member(key, LuaMemberIndexItem::One(id));
8889
return Some(());
8990
}
9091

91-
let item = member_map.get(&key)?.clone();
92+
let item = member_map.get_member(&key)?.clone();
9293
let new_items = if self.is_item_only_meta(&item) {
9394
match item {
9495
LuaMemberIndexItem::One(old_id) => {
@@ -112,8 +113,8 @@ impl LuaMemberIndex {
112113

113114
self.owner_members
114115
.entry(owner.clone())
115-
.or_insert_with(HashMap::new)
116-
.insert(key.clone(), new_items);
116+
.or_insert_with(LuaOwnerMembers::new)
117+
.add_member(key.clone(), new_items);
117118
}
118119

119120
Some(())
@@ -164,7 +165,7 @@ impl LuaMemberIndex {
164165
pub fn get_members(&self, owner: &LuaMemberOwner) -> Option<Vec<&LuaMember>> {
165166
let member_items = self.owner_members.get(owner)?;
166167
let mut members = Vec::new();
167-
for (_, item) in member_items {
168+
for item in member_items.get_member_items() {
168169
match item {
169170
LuaMemberIndexItem::One(id) => {
170171
if let Some(member) = self.get_member(id) {
@@ -192,7 +193,7 @@ impl LuaMemberIndex {
192193
let owner = self.member_current_owner.get(&member_id)?;
193194
let member_key = self.members.get(&member_id)?.get_key();
194195
let member_items = self.owner_members.get(owner)?;
195-
let item = member_items.get(member_key)?;
196+
let item = member_items.get_member(member_key)?;
196197
Some(item)
197198
}
198199

@@ -207,11 +208,15 @@ impl LuaMemberIndex {
207208
owner: &LuaMemberOwner,
208209
key: &LuaMemberKey,
209210
) -> Option<&LuaMemberIndexItem> {
210-
self.owner_members.get(owner).and_then(|map| map.get(key))
211+
self.owner_members
212+
.get(owner)
213+
.and_then(|map| map.get_member(key))
211214
}
212215

213216
pub fn get_member_len(&self, owner: &LuaMemberOwner) -> usize {
214-
self.owner_members.get(owner).map_or(0, |map| map.len())
217+
self.owner_members
218+
.get(owner)
219+
.map_or(0, |map| map.get_member_len())
215220
}
216221

217222
pub fn get_current_owner(&self, id: &LuaMemberId) -> Option<&LuaMemberOwner> {
@@ -256,7 +261,7 @@ impl LuaIndex for LuaMemberIndex {
256261
}
257262

258263
for key in need_removed_key {
259-
member_items.remove(&key);
264+
member_items.remove_member(&key);
260265
}
261266

262267
if member_items.is_empty() {

crates/emmylua_code_analysis/src/db_index/module/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ impl LuaModuleIndex {
177177
export_type: None,
178178
version_conds: None,
179179
workspace_id,
180-
property_owner_id: None,
180+
semantic_id: None,
181181
is_meta: false,
182182
};
183183

crates/emmylua_code_analysis/src/db_index/module/module_info.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub struct ModuleInfo {
1414
pub export_type: Option<LuaType>,
1515
pub version_conds: Option<Box<Vec<LuaVersionCondition>>>,
1616
pub workspace_id: WorkspaceId,
17-
pub property_owner_id: Option<LuaSemanticDeclId>,
17+
pub semantic_id: Option<LuaSemanticDeclId>,
1818
pub is_meta: bool,
1919
}
2020

@@ -38,7 +38,7 @@ impl ModuleInfo {
3838
}
3939

4040
pub fn is_export(&self, db: &DbIndex) -> bool {
41-
let Some(property_owner_id) = &self.property_owner_id else {
41+
let Some(property_owner_id) = &self.semantic_id else {
4242
return false;
4343
};
4444

@@ -49,7 +49,7 @@ impl ModuleInfo {
4949
}
5050

5151
pub fn get_export<'a>(&self, db: &'a DbIndex) -> Option<&'a LuaExport> {
52-
let property_owner_id = self.property_owner_id.as_ref()?;
52+
let property_owner_id = self.semantic_id.as_ref()?;
5353
let export = db
5454
.get_property_index()
5555
.get_property(property_owner_id)?

crates/emmylua_doc_cli/src/json_generator/export.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ fn export_modules(db: &DbIndex) -> Vec<Module> {
3838
};
3939

4040
let property = module
41-
.property_owner_id
41+
.semantic_id
4242
.as_ref()
4343
.map(|decl_id| export_property(db, decl_id))
4444
.unwrap_or_default();

crates/emmylua_doc_cli/src/markdown_generator/gen/mod_gen.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub fn generate_module_markdown(
2727
let mut context = tera::Context::new();
2828
let mut doc = Doc::default();
2929
doc.name = module.full_module_name.clone();
30-
let property_owner_id = module.property_owner_id.clone();
30+
let property_owner_id = module.semantic_id.clone();
3131
if let Some(property_id) = property_owner_id {
3232
doc.property = collect_property(db, property_id);
3333
}

crates/emmylua_ls/src/handlers/completion/providers/auto_require_provider.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ fn add_module_completion_item(
9494
return None;
9595
}
9696

97-
let data = if let Some(property_id) = &module_info.property_owner_id {
97+
let data = if let Some(property_id) = &module_info.semantic_id {
9898
CompletionData::from_property_owner_id(builder, property_id.clone(), None)
9999
} else {
100100
None

crates/emmylua_ls/src/handlers/completion/providers/module_path_provider.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ pub fn add_completion(builder: &mut CompletionBuilder) -> Option<()> {
5858
};
5959
if let Some(child_file_id) = child_module_node.file_ids.first() {
6060
let child_module_info = db.get_module_index().get_module(*child_file_id)?;
61-
let data = if let Some(property_id) = &child_module_info.property_owner_id {
61+
let data = if let Some(property_id) = &child_module_info.semantic_id {
6262
CompletionData::from_property_owner_id(builder, property_id.clone(), None)
6363
} else {
6464
None

0 commit comments

Comments
 (0)