@@ -64,23 +64,26 @@ fn add_variant_to_accumulator(
64
64
name_ref : & ast:: NameRef ,
65
65
) -> Option < ( ) > {
66
66
let adt_ast = adt. source ( ctx. db ( ) ) ?. original_ast_node ( ctx. db ( ) ) ?. value ;
67
+ let enum_indent = IndentLevel :: from_node ( & adt_ast. syntax ( ) ) ;
67
68
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 ( ) ;
78
72
79
73
acc. add (
80
74
AssistId ( "generate_enum_variant" , AssistKind :: Generate ) ,
81
75
"Generate variant" ,
82
76
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
+ } ,
84
87
)
85
88
}
86
89
0 commit comments