Unnamed repository; edit this file 'description' to name the repository.
Simplify
Lukas Wirth 2022-05-10
parent 822d9b5 · commit 26fef97
-rw-r--r--crates/ide-completion/src/context.rs9
-rw-r--r--crates/ide-completion/src/render.rs13
-rw-r--r--crates/ide-completion/src/render/macro_.rs4
3 files changed, 16 insertions, 10 deletions
diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs
index 5342c481e3..f6b8962df6 100644
--- a/crates/ide-completion/src/context.rs
+++ b/crates/ide-completion/src/context.rs
@@ -326,6 +326,7 @@ impl<'a> CompletionContext<'a> {
matches!(self.completion_location, Some(ImmediateLocation::ItemList))
}
+ // FIXME: This shouldn't exist
pub(crate) fn expects_generic_arg(&self) -> bool {
matches!(self.completion_location, Some(ImmediateLocation::GenericArgList(_)))
}
@@ -395,10 +396,6 @@ impl<'a> CompletionContext<'a> {
matches!(self.path_context(), Some(PathCompletionCtx { kind: PathKind::Type, .. }))
}
- pub(crate) fn path_is_call(&self) -> bool {
- self.path_context().map_or(false, |it| it.has_call_parens)
- }
-
pub(crate) fn is_non_trivial_path(&self) -> bool {
matches!(
self.path_context(),
@@ -417,10 +414,6 @@ impl<'a> CompletionContext<'a> {
self.path_context().map(|it| it.kind)
}
- pub(crate) fn is_immediately_after_macro_bang(&self) -> bool {
- self.token.kind() == BANG && self.token.parent().map_or(false, |it| it.kind() == MACRO_CALL)
- }
-
/// Checks if an item is visible and not `doc(hidden)` at the completion site.
pub(crate) fn is_visible<I>(&self, item: &I) -> Visible
where
diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs
index 01c9bfdb85..8bb0bc198a 100644
--- a/crates/ide-completion/src/render.rs
+++ b/crates/ide-completion/src/render.rs
@@ -65,6 +65,19 @@ impl<'a> RenderContext<'a> {
}
}
+ fn is_immediately_after_macro_bang(&self) -> bool {
+ self.completion.token.kind() == SyntaxKind::BANG
+ && self
+ .completion
+ .token
+ .parent()
+ .map_or(false, |it| it.kind() == SyntaxKind::MACRO_CALL)
+ }
+
+ pub(crate) fn path_is_call(&self) -> bool {
+ self.completion.path_context().map_or(false, |it| it.has_call_parens)
+ }
+
fn is_deprecated(&self, def: impl HasAttrs) -> bool {
let attrs = def.attrs(self.db());
attrs.by_key("deprecated").exists() || attrs.by_key("rustc_deprecated").exists()
diff --git a/crates/ide-completion/src/render/macro_.rs b/crates/ide-completion/src/render/macro_.rs
index 9c51a6311a..5c862f013a 100644
--- a/crates/ide-completion/src/render/macro_.rs
+++ b/crates/ide-completion/src/render/macro_.rs
@@ -20,7 +20,7 @@ fn render(
name: hir::Name,
macro_: hir::Macro,
) -> Builder {
- let source_range = if completion.is_immediately_after_macro_bang() {
+ let source_range = if ctx.is_immediately_after_macro_bang() {
cov_mark::hit!(completes_macro_call_if_cursor_at_bang_token);
completion.token.parent().map_or_else(|| ctx.source_range(), |it| it.text_range())
} else {
@@ -52,7 +52,7 @@ fn render(
let name = &*name;
match ctx.snippet_cap() {
- Some(cap) if needs_bang && !completion.path_is_call() => {
+ Some(cap) if needs_bang && !ctx.path_is_call() => {
let snippet = format!("{}!{}$0{}", name, bra, ket);
let lookup = banged_name(name);
item.insert_snippet(cap, snippet).lookup_by(lookup);