Skip to content

Commit ecd6a03

Browse files
committed
stash
1 parent 1a5d2fa commit ecd6a03

27 files changed

+454
-244
lines changed

crates/emmylua_code_analysis/src/compilation/analyzer/bind_type/migrate_global_member.rs

Lines changed: 0 additions & 66 deletions
This file was deleted.

crates/emmylua_code_analysis/src/compilation/analyzer/bind_type/mod.rs renamed to crates/emmylua_code_analysis/src/compilation/analyzer/common/bind_type.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
mod migrate_global_member;
2-
3-
use migrate_global_member::migrate_global_members_when_type_resolve;
1+
// use migrate_global_member::migrate_global_members_when_type_resolve;
42
use rowan::TextRange;
53

64
use crate::{
@@ -46,7 +44,7 @@ pub fn bind_type(
4644

4745
db.get_type_index_mut()
4846
.bind_type(type_owner.clone(), type_cache);
49-
migrate_global_members_when_type_resolve(db, type_owner);
47+
// migrate_global_members_when_type_resolve(db, type_owner);
5048
} else {
5149
let decl_type = decl_type_cache?.as_type();
5250
merge_def_type(db, decl_type.clone(), type_cache.as_type().clone());
@@ -100,12 +98,12 @@ pub fn add_member(db: &mut DbIndex, owner: LuaMemberOwner, member_id: LuaMemberI
10098
Some(())
10199
}
102100

103-
fn get_owner_id(db: &DbIndex, type_owner: &LuaTypeOwner) -> Option<LuaMemberOwner> {
104-
let type_cache = db.get_type_index().get_type_cache(&type_owner)?;
105-
match type_cache.as_type() {
106-
LuaType::Ref(type_id) => Some(LuaMemberOwner::Type(type_id.clone())),
107-
LuaType::TableConst(id) => Some(LuaMemberOwner::Element(id.clone())),
108-
LuaType::Instance(inst) => Some(LuaMemberOwner::Element(inst.get_range().clone())),
109-
_ => None,
110-
}
111-
}
101+
// fn get_owner_id(db: &DbIndex, type_owner: &LuaTypeOwner) -> Option<LuaMemberOwner> {
102+
// let type_cache = db.get_type_index().get_type_cache(&type_owner)?;
103+
// match type_cache.as_type() {
104+
// LuaType::Ref(type_id) => Some(LuaMemberOwner::Type(type_id.clone())),
105+
// LuaType::TableConst(id) => Some(LuaMemberOwner::Element(id.clone())),
106+
// LuaType::Instance(inst) => Some(LuaMemberOwner::Element(inst.get_range().clone())),
107+
// _ => None,
108+
// }
109+
// }
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
use emmylua_parser::{LuaAstNode, LuaNameExpr};
2+
3+
use crate::{DbIndex, FileId, GlobalId, LuaDeclId, LuaMemberOwner, LuaType};
4+
5+
pub fn get_name_expr_member_owner(db: &DbIndex, file_id: FileId, name_expr: &LuaNameExpr) -> Option<LuaMemberOwner> {
6+
let decl_id = LuaDeclId::new(file_id, name_expr.get_position());
7+
if let Some(owner) = get_decl_member_owner(&db, &decl_id) {
8+
return Some(owner);
9+
}
10+
11+
let decl_tree = db.get_decl_index().get_decl_tree(&file_id)?;
12+
let name = name_expr.get_name_text()?;
13+
let prev_decl = decl_tree.find_local_decl(&name, name_expr.get_position())?;
14+
15+
Some(LuaMemberOwner::DeclId(prev_decl.get_id()))
16+
}
17+
18+
pub fn get_decl_member_owner(db: &DbIndex, decl_id: &LuaDeclId) -> Option<LuaMemberOwner> {
19+
if let Some(type_cache) = db.get_type_index().get_type_cache(&decl_id.clone().into()) {
20+
let decl_type = type_cache.as_type();
21+
match decl_type {
22+
LuaType::Def(type_id) => {
23+
return Some(LuaMemberOwner::Type(type_id.clone()));
24+
}
25+
LuaType::GlobalTable(global_id) => {
26+
return Some(LuaMemberOwner::Global(GlobalId(global_id.clone())));
27+
}
28+
LuaType::LocalDecl(decl_id) => {
29+
return Some(LuaMemberOwner::DeclId(decl_id.clone()));
30+
}
31+
32+
_ => return None,
33+
}
34+
}
35+
36+
let decl = db.get_decl_index().get_decl(decl_id)?;
37+
38+
if decl.is_global() {
39+
return Some(LuaMemberOwner::Global(GlobalId::new(decl.get_name())));
40+
}
41+
42+
Some(LuaMemberOwner::DeclId(decl_id.clone()))
43+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
// use crate::{DbIndex, GlobalId, LuaDeclId, LuaMemberId, LuaMemberOwner, LuaTypeOwner};
2+
3+
// use super::get_owner_id;
4+
5+
// pub fn migrate_global_members_when_type_resolve(
6+
// db: &mut DbIndex,
7+
// type_owner: LuaTypeOwner,
8+
// ) -> Option<()> {
9+
// match type_owner {
10+
// LuaTypeOwner::Decl(decl_id) => {
11+
// migrate_global_member_to_decl(db, decl_id);
12+
// }
13+
// LuaTypeOwner::Member(member_id) => {
14+
// migrate_global_member_to_member(db, member_id);
15+
// }
16+
// _ => {}
17+
// }
18+
// Some(())
19+
// }
20+
21+
// fn migrate_global_member_to_decl(db: &mut DbIndex, decl_id: LuaDeclId) -> Option<()> {
22+
// let decl = db.get_decl_index().get_decl(&decl_id)?;
23+
// if !decl.is_global() {
24+
// return None;
25+
// }
26+
27+
// let owner_id = get_owner_id(db, &decl_id.clone().into())?;
28+
29+
// let name = decl.get_name();
30+
// let global_id = GlobalId::new(name.into());
31+
// let members = db
32+
// .get_member_index()
33+
// .get_members(&LuaMemberOwner::GlobalPath(global_id))?
34+
// .iter()
35+
// .map(|member| member.get_id())
36+
// .collect::<Vec<_>>();
37+
38+
// let member_index = db.get_member_index_mut();
39+
// for member_id in members {
40+
// member_index.set_member_owner(owner_id.clone(), member_id.file_id, member_id);
41+
// member_index.add_member_to_owner(owner_id.clone(), member_id);
42+
// }
43+
44+
// Some(())
45+
// }
46+
47+
// fn migrate_global_member_to_member(db: &mut DbIndex, member_id: LuaMemberId) -> Option<()> {
48+
// let member = db.get_member_index().get_member(&member_id)?;
49+
// let global_id = member.get_global_id()?;
50+
// let owner_id = get_owner_id(db, &member_id.clone().into())?;
51+
52+
// let members = db
53+
// .get_member_index()
54+
// .get_members(&LuaMemberOwner::GlobalPath(global_id.clone()))?
55+
// .iter()
56+
// .map(|member| member.get_id())
57+
// .collect::<Vec<_>>();
58+
59+
// let member_index = db.get_member_index_mut();
60+
// for member_id in members {
61+
// member_index.set_member_owner(owner_id.clone(), member_id.file_id, member_id);
62+
// member_index.add_member_to_owner(owner_id.clone(), member_id);
63+
// }
64+
65+
// Some(())
66+
// }
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
mod bind_type;
2+
mod member;
3+
4+
pub use bind_type::{add_member, bind_type};
5+
pub use member::*;

crates/emmylua_code_analysis/src/compilation/analyzer/decl/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
mod docs;
22
mod exprs;
3-
mod members;
43
mod stats;
54

65
use crate::{
@@ -89,6 +88,7 @@ fn walk_node_enter(analyzer: &mut DeclAnalyzer, node: LuaAst) {
8988
analyzer.create_scope(expr.get_range(), LuaScopeKind::Normal);
9089
exprs::analyze_closure_expr(analyzer, expr);
9190
}
91+
// add reference
9292
// LuaAst::LuaTableExpr(expr) => {
9393
// exprs::analyze_table_expr(analyzer, expr);
9494
// }

0 commit comments

Comments
 (0)