@@ -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