diff options
author | Aleksey Kladov <[email protected]> | 2020-07-09 11:14:26 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-07-09 11:14:26 +0100 |
commit | 4399eff2d06f9134ff37a4dfd47204de6ebebd92 (patch) | |
tree | d7330bf7d50a78f86339c91168ca53379e689dcf | |
parent | 8e1ebbcc136d1bb8f120d0db2625b70a37b756f8 (diff) |
Re-enable IDE features for incomplete impl blocs
-rw-r--r-- | crates/ra_hir_def/src/item_tree/lower.rs | 5 | ||||
-rw-r--r-- | crates/ra_ide/src/completion/complete_unqualified_path.rs | 17 | ||||
-rw-r--r-- | crates/ra_ide/src/completion/completion_item.rs | 2 |
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#" | ||
646 | trait MyTrait {} | ||
647 | struct MyStruct {} | ||
648 | |||
649 | impl 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. |
62 | impl fmt::Debug for CompletionItem { | 62 | impl 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"); |