Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_completion/src/completions/attribute/derive.rs')
| -rw-r--r-- | crates/ide_completion/src/completions/attribute/derive.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/crates/ide_completion/src/completions/attribute/derive.rs b/crates/ide_completion/src/completions/attribute/derive.rs index 64f6e3989d..fdac579c02 100644 --- a/crates/ide_completion/src/completions/attribute/derive.rs +++ b/crates/ide_completion/src/completions/attribute/derive.rs @@ -6,14 +6,21 @@ use ide_db::{ }; use itertools::Itertools; use rustc_hash::FxHashSet; -use syntax::{ast, SmolStr, SyntaxKind}; +use syntax::{SmolStr, SyntaxKind}; use crate::{ - completions::flyimport::compute_fuzzy_completion_order_key, context::CompletionContext, - item::CompletionItem, Completions, ImportEdit, + completions::flyimport::compute_fuzzy_completion_order_key, + context::{CompletionContext, PathCompletionCtx, PathKind}, + item::CompletionItem, + Completions, ImportEdit, }; -pub(super) fn complete_derive(acc: &mut Completions, ctx: &CompletionContext, attr: &ast::Attr) { +pub(crate) fn complete_derive(acc: &mut Completions, ctx: &CompletionContext) { + let attr = match (&ctx.path_context, ctx.attr.as_ref()) { + (Some(PathCompletionCtx { kind: Some(PathKind::Derive), .. }), Some(attr)) => attr, + _ => return, + }; + let core = ctx.famous_defs().core(); let existing_derives: FxHashSet<_> = ctx.sema.resolve_derive_macro(attr).into_iter().flatten().flatten().collect(); |