Skip to content

Commit 1b46348

Browse files
committed
fix generic class completion
1 parent e132bcb commit 1b46348

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

crates/emmylua_code_analysis/src/db_index/type/humanize_type.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,9 +415,6 @@ fn humanize_generic_type(db: &DbIndex, generic: &LuaGenericType, level: RenderLe
415415
}
416416
}
417417
}
418-
RenderLevel::Minimal => {
419-
return format!("{}<...>", simple_name);
420-
}
421418
_ => {}
422419
}
423420

crates/emmylua_code_analysis/src/semantic/member/infer_member_map.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,25 @@ pub fn infer_member_map(
1616
let mut member_map = HashMap::new();
1717
for member in members {
1818
let key = member.key.clone();
19+
let typ = &member.typ;
20+
if let LuaType::Union(u) = typ {
21+
if u.get_types().iter().all(|f| f.is_function()) {
22+
for f in u.get_types() {
23+
let new_member = LuaMemberInfo {
24+
key: key.clone(),
25+
typ: f.clone(),
26+
property_owner_id: member.property_owner_id.clone(),
27+
feature: member.feature.clone(),
28+
};
29+
30+
member_map
31+
.entry(key.clone())
32+
.or_insert_with(Vec::new)
33+
.push(new_member);
34+
}
35+
continue;
36+
}
37+
}
1938
member_map.entry(key).or_insert_with(Vec::new).push(member);
2039
}
2140

crates/emmylua_ls/src/handlers/rename/mod.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,8 @@ pub async fn on_prepare_rename_handler(
7171
let position = params.position;
7272
let semantic_model = analysis.compilation.get_semantic_model(file_id)?;
7373
let root = semantic_model.get_root();
74-
let position_offset = {
75-
let document = semantic_model.get_document();
76-
document.get_offset(position.line as usize, position.character as usize)?
77-
};
74+
let document = semantic_model.get_document();
75+
let position_offset = document.get_offset(position.line as usize, position.character as usize)?;
7876

7977
if position_offset > root.syntax().text_range().end() {
8078
return None;
@@ -98,9 +96,9 @@ pub async fn on_prepare_rename_handler(
9896
token.kind().into(),
9997
LuaTokenKind::TkName | LuaTokenKind::TkInt | LuaTokenKind::TkString
10098
) {
101-
Some(PrepareRenameResponse::DefaultBehavior {
102-
default_behavior: true,
103-
})
99+
let range = document.to_lsp_range(token.text_range())?;
100+
let placeholder = token.text().to_string();
101+
Some(PrepareRenameResponse::RangeWithPlaceholder { range, placeholder })
104102
} else {
105103
None
106104
}

0 commit comments

Comments
 (0)