Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/dot.rs')
-rw-r--r--crates/ide-completion/src/completions/dot.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs
index cc6df718ce..59c6c55c22 100644
--- a/crates/ide-completion/src/completions/dot.rs
+++ b/crates/ide-completion/src/completions/dot.rs
@@ -263,8 +263,8 @@ fn complete_methods(
}
}
};
- same_name.insert_entry(func);
if do_complete {
+ same_name.insert_entry(func);
(self.f)(func);
}
}
@@ -924,15 +924,39 @@ fn test(a: A) {
//- /dep.rs crate:dep
pub struct A {}
pub struct B {}
+pub struct C {}
+pub struct D {}
+pub struct E {}
+pub struct F {}
impl core::ops::Deref for A {
type Target = B;
fn deref(&self) -> &Self::Target { loop {} }
}
+impl core::ops::Deref for B {
+ type Target = C;
+ fn deref(&self) -> &Self::Target { loop {} }
+}
+impl core::ops::Deref for C {
+ type Target = D;
+ fn deref(&self) -> &Self::Target { loop {} }
+}
+impl core::ops::Deref for D {
+ type Target = E;
+ fn deref(&self) -> &Self::Target { loop {} }
+}
+impl core::ops::Deref for E {
+ type Target = F;
+ fn deref(&self) -> &Self::Target { loop {} }
+}
pub trait Foo { fn foo(&self) -> u32 {} }
impl Foo for A {}
impl Foo for B {}
impl A { fn foo(&self) -> u8 {} }
impl B { pub fn foo(&self) -> u16 {} }
+impl C { fn foo(&self) -> i8 {} }
+impl D { fn foo(&self) -> i16 {} }
+impl E { pub fn foo(&self) -> i32 {} }
+impl F { pub fn foo(&self) -> f32 {} }
//- /main.rs crate:main deps:dep
use dep::*;
fn test(a: A) {