Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #16016 - dfireBird:regression-fix-15879, r=lnicola
fix: Insert fn call parens only if the parens inserted around field name Fixes #16014. Sorry I missed it in previous PR. I've added a test as level to prevent regressions again. Give any suggestions to improve the test if anything.
bors 2023-12-05
parent 986577f · parent 20c6f27 · commit afc1ae1
-rw-r--r--crates/ide-completion/src/completions/record.rs25
-rw-r--r--crates/ide-completion/src/render.rs12
2 files changed, 31 insertions, 6 deletions
diff --git a/crates/ide-completion/src/completions/record.rs b/crates/ide-completion/src/completions/record.rs
index 945c3945bf..46213deb0a 100644
--- a/crates/ide-completion/src/completions/record.rs
+++ b/crates/ide-completion/src/completions/record.rs
@@ -430,4 +430,29 @@ fn foo() {
"#,
);
}
+
+ #[test]
+ fn callable_field_struct_init() {
+ check_edit(
+ "field",
+ r#"
+struct S {
+ field: fn(),
+}
+
+fn main() {
+ S {fi$0
+}
+"#,
+ r#"
+struct S {
+ field: fn(),
+}
+
+fn main() {
+ S {field
+}
+"#,
+ );
+ }
}
diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs
index 048730c078..830d7cabab 100644
--- a/crates/ide-completion/src/render.rs
+++ b/crates/ide-completion/src/render.rs
@@ -169,14 +169,14 @@ pub(crate) fn render_field(
if let Some(receiver) = ctx.completion.sema.original_ast_node(receiver.clone()) {
builder.insert(receiver.syntax().text_range().start(), "(".to_string());
builder.insert(ctx.source_range().end(), ")".to_string());
- }
- }
- let is_parens_needed =
- !matches!(dot_access.kind, DotAccessKind::Method { has_parens: true });
+ let is_parens_needed =
+ !matches!(dot_access.kind, DotAccessKind::Method { has_parens: true });
- if is_parens_needed {
- builder.insert(ctx.source_range().end(), "()".to_string());
+ if is_parens_needed {
+ builder.insert(ctx.source_range().end(), "()".to_string());
+ }
+ }
}
}