aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-07-09 11:14:26 +0100
committerAleksey Kladov <[email protected]>2020-07-09 11:14:26 +0100
commit4399eff2d06f9134ff37a4dfd47204de6ebebd92 (patch)
treed7330bf7d50a78f86339c91168ca53379e689dcf
parent8e1ebbcc136d1bb8f120d0db2625b70a37b756f8 (diff)
Re-enable IDE features for incomplete impl blocs
-rw-r--r--crates/ra_hir_def/src/item_tree/lower.rs5
-rw-r--r--crates/ra_ide/src/completion/complete_unqualified_path.rs17
-rw-r--r--crates/ra_ide/src/completion/completion_item.rs2
3 files changed, 21 insertions, 3 deletions
diff --git a/crates/ra_hir_def/src/item_tree/lower.rs b/crates/ra_hir_def/src/item_tree/lower.rs
index 06743d7fc..eaa10d999 100644
--- a/crates/ra_hir_def/src/item_tree/lower.rs
+++ b/crates/ra_hir_def/src/item_tree/lower.rs
@@ -450,8 +450,9 @@ impl Ctx {
450 450
451 // We cannot use `assoc_items()` here as that does not include macro calls. 451 // We cannot use `assoc_items()` here as that does not include macro calls.
452 let items = impl_def 452 let items = impl_def
453 .item_list()? 453 .item_list()
454 .items() 454 .into_iter()
455 .flat_map(|it| it.items())
455 .filter_map(|item| { 456 .filter_map(|item| {
456 self.collect_inner_items(item.syntax()); 457 self.collect_inner_items(item.syntax());
457 let assoc = self.lower_assoc_item(&item)?; 458 let assoc = self.lower_assoc_item(&item)?;
diff --git a/crates/ra_ide/src/completion/complete_unqualified_path.rs b/crates/ra_ide/src/completion/complete_unqualified_path.rs
index 72ff82e66..18f4488b7 100644
--- a/crates/ra_ide/src/completion/complete_unqualified_path.rs
+++ b/crates/ra_ide/src/completion/complete_unqualified_path.rs
@@ -638,4 +638,21 @@ fn f() {}
638 expect![[""]], 638 expect![[""]],
639 ) 639 )
640 } 640 }
641
642 #[test]
643 fn completes_type_or_trait_in_impl_block() {
644 check(
645 r#"
646trait MyTrait {}
647struct MyStruct {}
648
649impl My<|>
650"#,
651 expect![[r#"
652 st MyStruct
653 tt MyTrait
654 tp Self
655 "#]],
656 )
657 }
641} 658}
diff --git a/crates/ra_ide/src/completion/completion_item.rs b/crates/ra_ide/src/completion/completion_item.rs
index d7011c9cf..7bdda316c 100644
--- a/crates/ra_ide/src/completion/completion_item.rs
+++ b/crates/ra_ide/src/completion/completion_item.rs
@@ -58,7 +58,7 @@ pub struct CompletionItem {
58 score: Option<CompletionScore>, 58 score: Option<CompletionScore>,
59} 59}
60 60
61// We use custom debug for CompletionItem to make `insta`'s diffs more readable. 61// We use custom debug for CompletionItem to make snapshot tests more readable.
62impl fmt::Debug for CompletionItem { 62impl fmt::Debug for CompletionItem {
63 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 63 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
64 let mut s = f.debug_struct("CompletionItem"); 64 let mut s = f.debug_struct("CompletionItem");