Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/ide_completion/src/render.rs37
-rw-r--r--crates/ide_completion/src/render/function.rs8
2 files changed, 41 insertions, 4 deletions
diff --git a/crates/ide_completion/src/render.rs b/crates/ide_completion/src/render.rs
index 1850fd1aa8..604f217447 100644
--- a/crates/ide_completion/src/render.rs
+++ b/crates/ide_completion/src/render.rs
@@ -1468,6 +1468,43 @@ fn foo(f: Foo) { let _: &u32 = f.b$0 }
}
#[test]
+ fn qualified_path_ref() {
+ // disabled right now because it doesn't render correctly, #8058
+ check_kinds(
+ r#"
+struct S;
+
+struct T;
+impl T {
+ fn foo() -> S {}
+}
+
+fn bar(s: &S) {}
+
+fn main() {
+ bar(T::$0);
+}
+"#,
+ &[CompletionItemKind::SymbolKind(SymbolKind::Function)],
+ expect![[r#"
+ [
+ CompletionItem {
+ label: "foo()",
+ source_range: 95..95,
+ delete: 95..95,
+ insert: "foo()$0",
+ kind: SymbolKind(
+ Function,
+ ),
+ lookup: "foo",
+ detail: "fn() -> S",
+ },
+ ]
+ "#]],
+ );
+ }
+
+ #[test]
fn generic_enum() {
check_relevance(
r#"
diff --git a/crates/ide_completion/src/render/function.rs b/crates/ide_completion/src/render/function.rs
index 7df13988ad..85014717d6 100644
--- a/crates/ide_completion/src/render/function.rs
+++ b/crates/ide_completion/src/render/function.rs
@@ -74,10 +74,10 @@ fn render(
});
if let Some(ref_match) = compute_ref_match(completion, &ret_type) {
- // FIXME
- // For now we don't properly calculate the edits for ref match
- // completions on methods, so we've disabled them. See #8058.
- if matches!(func_kind, FuncKind::Function) {
+ // FIXME For now we don't properly calculate the edits for ref match
+ // completions on methods or qualified paths, so we've disabled them.
+ // See #8058.
+ if matches!(func_kind, FuncKind::Function) && ctx.completion.path_qual().is_none() {
item.ref_match(ref_match);
}
}