Unnamed repository; edit this file 'description' to name the repository.
Add newline to body when where clause is present
DropDemBits 2024-02-09
parent 0519414 · commit f1293a8
-rw-r--r--crates/ide-assists/src/handlers/generate_delegate_trait.rs6
-rw-r--r--crates/syntax/src/ast/make.rs18
2 files changed, 19 insertions, 5 deletions
diff --git a/crates/ide-assists/src/handlers/generate_delegate_trait.rs b/crates/ide-assists/src/handlers/generate_delegate_trait.rs
index 37dd41f8ec..7a60287f92 100644
--- a/crates/ide-assists/src/handlers/generate_delegate_trait.rs
+++ b/crates/ide-assists/src/handlers/generate_delegate_trait.rs
@@ -956,7 +956,8 @@ where
impl<T> AnotherTrait for S<T>
where
T: AnotherTrait,
-{}"#,
+{
+}"#,
);
}
@@ -1446,7 +1447,8 @@ where
impl<T> AnotherTrait for S<T>
where
T: AnotherTrait,
-{}"#,
+{
+}"#,
);
}
diff --git a/crates/syntax/src/ast/make.rs b/crates/syntax/src/ast/make.rs
index b6e5e6a4e4..9d6ed67361 100644
--- a/crates/syntax/src/ast/make.rs
+++ b/crates/syntax/src/ast/make.rs
@@ -248,8 +248,11 @@ pub fn impl_(
let gen_params = generic_params.map_or_else(String::new, |it| it.to_string());
+ let body_newline =
+ if where_clause.is_some() && body.is_none() { "\n".to_string() } else { String::new() };
+
let where_clause = match where_clause {
- Some(pr) => pr.to_string(),
+ Some(pr) => format!("\n{pr}\n"),
None => " ".to_string(),
};
@@ -258,7 +261,9 @@ pub fn impl_(
None => String::new(),
};
- ast_from_text(&format!("impl{gen_params} {path_type}{gen_args}{where_clause}{{{body}}}"))
+ ast_from_text(&format!(
+ "impl{gen_params} {path_type}{gen_args}{where_clause}{{{body_newline}{body}}}"
+ ))
}
pub fn impl_trait(
@@ -284,6 +289,13 @@ pub fn impl_trait(
let is_negative = if is_negative { "! " } else { "" };
+ let body_newline =
+ if (ty_where_clause.is_some() || trait_where_clause.is_some()) && body.is_none() {
+ "\n".to_string()
+ } else {
+ String::new()
+ };
+
let where_clause = merge_where_clause(ty_where_clause, trait_where_clause)
.map_or_else(|| " ".to_string(), |wc| format!("\n{}\n", wc));
@@ -292,7 +304,7 @@ pub fn impl_trait(
None => String::new(),
};
- ast_from_text(&format!("{is_unsafe}impl{gen_params} {is_negative}{path_type}{trait_gen_args} for {ty}{type_gen_args}{where_clause}{{{body}}}"))
+ ast_from_text(&format!("{is_unsafe}impl{gen_params} {is_negative}{path_type}{trait_gen_args} for {ty}{type_gen_args}{where_clause}{{{body_newline}{body}}}"))
}
pub fn impl_trait_type(bounds: ast::TypeBoundList) -> ast::ImplTraitType {