From 4cc3a6d4fe16e342fcb2f791dd0ceccc188fb8ad Mon Sep 17 00:00:00 2001 From: Nick Spain Date: Thu, 31 Dec 2020 16:22:59 +1100 Subject: Fix completion of Default struct update syntax Previously the inserted text was always `..Default::default()` which ends up as `...Default::default()` if `.` was typed. Now checks if the current token is `.` and inserts `.Default::default()` if it is, so `..Default::default()` is correctly completed. Fixes #6969 --- crates/completion/src/completions/record.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/completion/src/completions/record.rs b/crates/completion/src/completions/record.rs index 91bf4a8ad..8f904adfd 100644 --- a/crates/completion/src/completions/record.rs +++ b/crates/completion/src/completions/record.rs @@ -20,13 +20,18 @@ pub(crate) fn complete_record(acc: &mut Completions, ctx: &CompletionContext) -> let missing_fields = ctx.sema.record_literal_missing_fields(record_lit); if impl_default_trait && !missing_fields.is_empty() { + let completion_text = if ctx.token.to_string() == "." { + ".Default::default()" + } else { + "..Default::default()" + }; acc.add( CompletionItem::new( CompletionKind::Snippet, ctx.source_range(), "..Default::default()", ) - .insert_text("..Default::default()") + .insert_text(completion_text) .kind(CompletionItemKind::Field) .build(), ); -- cgit v1.2.3