Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_completion/src/completions/flyimport.rs')
-rw-r--r--crates/ide_completion/src/completions/flyimport.rs32
1 files changed, 15 insertions, 17 deletions
diff --git a/crates/ide_completion/src/completions/flyimport.rs b/crates/ide_completion/src/completions/flyimport.rs
index 486cbff685..a5c134714b 100644
--- a/crates/ide_completion/src/completions/flyimport.rs
+++ b/crates/ide_completion/src/completions/flyimport.rs
@@ -125,12 +125,12 @@ pub(crate) fn import_on_the_fly(acc: &mut Completions, ctx: &CompletionContext)
}
};
- let _p = profile::span("import_on_the_fly").detail(|| potential_import_name.to_string());
+ let _p = profile::span("import_on_the_fly").detail(|| potential_import_name.clone());
let user_input_lowercased = potential_import_name.to_lowercase();
let import_assets = import_assets(ctx, potential_import_name)?;
let import_scope = ImportScope::find_insert_use_container_with_macros(
- position_for_import(ctx, Some(import_assets.import_candidate()))?,
+ &position_for_import(ctx, Some(import_assets.import_candidate()))?,
&ctx.sema,
)?;
@@ -158,21 +158,19 @@ pub(crate) fn import_on_the_fly(acc: &mut Completions, ctx: &CompletionContext)
Some(())
}
-pub(crate) fn position_for_import<'a>(
- ctx: &'a CompletionContext,
+pub(crate) fn position_for_import(
+ ctx: &CompletionContext,
import_candidate: Option<&ImportCandidate>,
-) -> Option<&'a SyntaxNode> {
- Some(match import_candidate {
- Some(ImportCandidate::Path(_)) => ctx.name_syntax.as_ref()?.syntax(),
- Some(ImportCandidate::TraitAssocItem(_)) => ctx.path_qual()?.syntax(),
- Some(ImportCandidate::TraitMethod(_)) => ctx.dot_receiver()?.syntax(),
- None => ctx
- .name_syntax
- .as_ref()
- .map(|name_ref| name_ref.syntax())
- .or_else(|| ctx.path_qual().map(|path| path.syntax()))
- .or_else(|| ctx.dot_receiver().map(|expr| expr.syntax()))?,
- })
+) -> Option<SyntaxNode> {
+ Some(
+ match import_candidate {
+ Some(ImportCandidate::Path(_)) => ctx.name_syntax.as_ref()?.syntax(),
+ Some(ImportCandidate::TraitAssocItem(_)) => ctx.path_qual()?.syntax(),
+ Some(ImportCandidate::TraitMethod(_)) => ctx.dot_receiver()?.syntax(),
+ None => return ctx.original_token.parent(),
+ }
+ .clone(),
+ )
}
fn import_assets(ctx: &CompletionContext, fuzzy_name: String) -> Option<ImportAssets> {
@@ -205,7 +203,7 @@ fn import_assets(ctx: &CompletionContext, fuzzy_name: String) -> Option<ImportAs
}
}
-fn compute_fuzzy_completion_order_key(
+pub(crate) fn compute_fuzzy_completion_order_key(
proposed_mod_path: &hir::ModPath,
user_input_lowercased: &str,
) -> usize {