Skip to content

Commit ae2c0db

Browse files
Pull text creation into the closure
1 parent 796c4d8 commit ae2c0db

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

crates/ide-assists/src/handlers/generate_enum_variant.rs

+14-11
Original file line numberDiff line numberDiff line change
@@ -64,23 +64,26 @@ fn add_variant_to_accumulator(
6464
name_ref: &ast::NameRef,
6565
) -> Option<()> {
6666
let adt_ast = adt.source(ctx.db())?.original_ast_node(ctx.db())?.value;
67+
let enum_indent = IndentLevel::from_node(&adt_ast.syntax());
6768

68-
let enum_indent_level = IndentLevel::from_node(&adt_ast.syntax());
69-
70-
let offset = adt_ast.variant_list()?.syntax().text_range().end() - TextSize::of('}');
71-
72-
let prefix = if adt_ast.variant_list()?.variants().next().is_none() {
73-
format!("\n{}", IndentLevel(1))
74-
} else {
75-
format!("{}", IndentLevel(1))
76-
};
77-
let text = format!("{}{},\n{}", prefix, name_ref, enum_indent_level);
69+
let variant_list = adt_ast.variant_list()?;
70+
let offset = variant_list.syntax().text_range().end() - TextSize::of('}');
71+
let empty_enum = variant_list.variants().next().is_none();
7872

7973
acc.add(
8074
AssistId("generate_enum_variant", AssistKind::Generate),
8175
"Generate variant",
8276
target,
83-
|builder| builder.insert(offset, text),
77+
|builder| {
78+
let text = format!(
79+
"{maybe_newline}{indent_1}{name},\n{enum_indent}",
80+
maybe_newline = if empty_enum { "\n" } else { "" },
81+
indent_1 = IndentLevel(1),
82+
name = name_ref,
83+
enum_indent = enum_indent
84+
);
85+
builder.insert(offset, text)
86+
},
8487
)
8588
}
8689

0 commit comments

Comments
 (0)