Re-enable IDE features for incomplete impl blocs

This commit is contained in:
Aleksey Kladov 2020-07-09 12:14:26 +02:00
parent 8e1ebbcc13
commit 4399eff2d0
3 changed files with 21 additions and 3 deletions

View file

@ -450,8 +450,9 @@ impl Ctx {
// We cannot use `assoc_items()` here as that does not include macro calls. // We cannot use `assoc_items()` here as that does not include macro calls.
let items = impl_def let items = impl_def
.item_list()? .item_list()
.items() .into_iter()
.flat_map(|it| it.items())
.filter_map(|item| { .filter_map(|item| {
self.collect_inner_items(item.syntax()); self.collect_inner_items(item.syntax());
let assoc = self.lower_assoc_item(&item)?; let assoc = self.lower_assoc_item(&item)?;

View file

@ -638,4 +638,21 @@ fn f() {}
expect![[""]], expect![[""]],
) )
} }
#[test]
fn completes_type_or_trait_in_impl_block() {
check(
r#"
trait MyTrait {}
struct MyStruct {}
impl My<|>
"#,
expect![[r#"
st MyStruct
tt MyTrait
tp Self
"#]],
)
}
} }

View file

@ -58,7 +58,7 @@ pub struct CompletionItem {
score: Option<CompletionScore>, score: Option<CompletionScore>,
} }
// We use custom debug for CompletionItem to make `insta`'s diffs more readable. // We use custom debug for CompletionItem to make snapshot tests more readable.
impl fmt::Debug for CompletionItem { impl fmt::Debug for CompletionItem {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let mut s = f.debug_struct("CompletionItem"); let mut s = f.debug_struct("CompletionItem");