From db335a1bbf1d1bea2c761f67efb4b49831738e31 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Tue, 5 Jan 2021 10:34:03 +0200 Subject: Add flyimport completion for trait assoc items --- crates/ide/src/doc_links.rs | 8 ++++---- crates/ide/src/lib.rs | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'crates/ide') diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs index de10406bc..1f08d7810 100644 --- a/crates/ide/src/doc_links.rs +++ b/crates/ide/src/doc_links.rs @@ -438,10 +438,10 @@ fn get_symbol_fragment(db: &dyn HirDatabase, field_or_assoc: &FieldOrAssocItem) FieldOrAssocItem::Field(field) => format!("#structfield.{}", field.name(db)), FieldOrAssocItem::AssocItem(assoc) => match assoc { AssocItem::Function(function) => { - let is_trait_method = matches!( - function.as_assoc_item(db).map(|assoc| assoc.container(db)), - Some(AssocItemContainer::Trait(..)) - ); + let is_trait_method = function + .as_assoc_item(db) + .and_then(|assoc| assoc.containing_trait(db)) + .is_some(); // This distinction may get more complicated when specialization is available. // Rustdoc makes this decision based on whether a method 'has defaultness'. // Currently this is only the case for provided trait methods. diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs index f8d69382e..07f52613f 100644 --- a/crates/ide/src/lib.rs +++ b/crates/ide/src/lib.rs @@ -481,6 +481,7 @@ impl Analysis { position: FilePosition, full_import_path: &str, imported_name: String, + import_for_trait_assoc_item: bool, ) -> Cancelable> { Ok(self .with_db(|db| { @@ -490,6 +491,7 @@ impl Analysis { position, full_import_path, imported_name, + import_for_trait_assoc_item, ) })? .unwrap_or_default()) -- cgit v1.2.3