Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/format_string.rs')
-rw-r--r--crates/ide-completion/src/completions/format_string.rs27
1 files changed, 12 insertions, 15 deletions
diff --git a/crates/ide-completion/src/completions/format_string.rs b/crates/ide-completion/src/completions/format_string.rs
index 132599906a..f7a75b2dd5 100644
--- a/crates/ide-completion/src/completions/format_string.rs
+++ b/crates/ide-completion/src/completions/format_string.rs
@@ -2,28 +2,25 @@
use ide_db::syntax_helpers::format_string::is_format_string;
use itertools::Itertools;
-use syntax::{AstToken, TextRange, TextSize};
+use syntax::{ast, AstToken, TextRange, TextSize};
-use crate::{
- context::{CompletionContext, IdentContext},
- CompletionItem, CompletionItemKind, Completions,
-};
+use crate::{context::CompletionContext, CompletionItem, CompletionItemKind, Completions};
/// Complete identifiers in format strings.
-pub(crate) fn format_string(acc: &mut Completions, ctx: &CompletionContext) {
- let string = match &ctx.ident_ctx {
- IdentContext::String { expanded: Some(expanded), original }
- if is_format_string(&expanded) =>
- {
- original
- }
- _ => return,
- };
+pub(crate) fn format_string(
+ acc: &mut Completions,
+ ctx: &CompletionContext,
+ original: &ast::String,
+ expanded: &ast::String,
+) {
+ if !is_format_string(&expanded) {
+ return;
+ }
let cursor = ctx.position.offset;
let lit_start = ctx.original_token.text_range().start();
let cursor_in_lit = cursor - lit_start;
- let prefix = &string.text()[..cursor_in_lit.into()];
+ let prefix = &original.text()[..cursor_in_lit.into()];
let braces = prefix.char_indices().rev().skip_while(|&(_, c)| c.is_alphanumeric()).next_tuple();
let brace_offset = match braces {
// escaped brace