Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #13893 - ntBre:master, r=lnicola
Complete record enum variants without parens when snippets are disabled I didn't realize I only handled this for tuple variants in #13805. This is the same change but for record variants.
bors 2023-01-05
parent a97c71f · parent 150da92 · commit 80cabf7
-rw-r--r--crates/ide-completion/src/completions/record.rs31
-rw-r--r--crates/ide-completion/src/render/variant.rs3
2 files changed, 33 insertions, 1 deletions
diff --git a/crates/ide-completion/src/completions/record.rs b/crates/ide-completion/src/completions/record.rs
index 6743ec897f..0521e735de 100644
--- a/crates/ide-completion/src/completions/record.rs
+++ b/crates/ide-completion/src/completions/record.rs
@@ -159,8 +159,9 @@ fn baz() {
#[test]
fn enum_variant_no_snippets() {
let conf = CompletionConfig { snippet_cap: SnippetCap::new(false), ..TEST_CONFIG };
+ // tuple variant
check_edit_with_config(
- conf,
+ conf.clone(),
"Variant()",
r#"
enum Enum {
@@ -184,6 +185,34 @@ impl Enum {
}
}
"#,
+ );
+
+ // record variant
+ check_edit_with_config(
+ conf,
+ "Variant{}",
+ r#"
+enum Enum {
+ Variant{u: usize},
+}
+
+impl Enum {
+ fn new(u: usize) -> Self {
+ Self::Va$0
+ }
+}
+"#,
+ r#"
+enum Enum {
+ Variant{u: usize},
+}
+
+impl Enum {
+ fn new(u: usize) -> Self {
+ Self::Variant
+ }
+}
+"#,
)
}
diff --git a/crates/ide-completion/src/render/variant.rs b/crates/ide-completion/src/render/variant.rs
index f3e88489f4..55c55725be 100644
--- a/crates/ide-completion/src/render/variant.rs
+++ b/crates/ide-completion/src/render/variant.rs
@@ -22,6 +22,9 @@ pub(crate) fn render_record_lit(
fields: &[hir::Field],
path: &str,
) -> RenderedLiteral {
+ if snippet_cap.is_none() {
+ return RenderedLiteral { literal: path.to_string(), detail: path.to_string() };
+ }
let completions = fields.iter().enumerate().format_with(", ", |(idx, field), f| {
if snippet_cap.is_some() {
f(&format_args!("{}: ${{{}:()}}", field.name(db), idx + 1))