From: Lukas Wirth Date: Tue, 10 May 2022 12:31:28 +0000 (+0200) Subject: Simplify X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=26fef97d5917eb9f148f4ef45a0104e95e037e95;p=rust.git Simplify --- diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs index 5342c481e36..f6b8962df63 100644 --- a/crates/ide-completion/src/context.rs +++ b/crates/ide-completion/src/context.rs @@ -326,6 +326,7 @@ pub(crate) fn expects_item(&self) -> bool { 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 @@ pub(crate) fn expects_type(&self) -> bool { 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 @@ pub(crate) fn path_kind(&self) -> Option { 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(&self, item: &I) -> Visible where diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index 01c9bfdb85c..8bb0bc198ae 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -65,6 +65,19 @@ fn completion_relevance(&self) -> CompletionRelevance { } } + 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 9c51a6311a4..5c862f013a7 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);