diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/odin/printer/visit.odin | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/src/odin/printer/visit.odin b/src/odin/printer/visit.odin index a58a0de..49f71f4 100644 --- a/src/odin/printer/visit.odin +++ b/src/odin/printer/visit.odin @@ -329,7 +329,13 @@ visit_decl :: proc(p: ^Printer, decl: ^ast.Decl, called_in_stmt := false) -> ^Do rhs = cons_with_nopl(rhs, visit_exprs(p, v.values, {.Add_Comma}, .Value_Decl)) } else if len(v.values) > 0 && v.type != nil { - rhs = cons_with_nopl(rhs, cons_with_nopl(text(" :" if p.config.spaces_around_colons else ":"), visit_exprs(p, v.values, {.Add_Comma}))) + rhs = cons_with_nopl( + rhs, + cons_with_nopl( + text(" :" if p.config.spaces_around_colons else ":"), + visit_exprs(p, v.values, {.Add_Comma}), + ), + ) } else { rhs = cons_with_nopl(rhs, visit_exprs(p, v.values, {.Add_Comma}, .Value_Decl)) } @@ -1601,7 +1607,8 @@ visit_expr :: proc( if v.fields != nil && len(v.fields.list) == 0 { document = cons_with_nopl(document, text("{")) - document = cons(document, visit_struct_field_list(p, v.fields, {.Add_Comma}), text("}")) + comments, _ := visit_comments(p, v.end) + document = cons(document, nest(comments), newline(1), text("}")) } else if v.fields != nil { document = cons(document, break_with_space(), visit_begin_brace(p, v.pos, .Generic)) @@ -1794,19 +1801,16 @@ visit_expr :: proc( if should_newline { document = cons_with_nopl(document, visit_begin_brace(p, v.pos, .Comp_Lit)) - set_source_position(p, v.open) - document = cons( - document, - nest( - cons( - newline_position(p, 1, v.elems[0].pos), - visit_comp_lit_exprs(p, v^, {.Add_Comma, .Trailing, .Enforce_Newline}), - ), - ), - ) - set_source_position(p, v.end) - - document = cons(document, newline(1), text_position(p, "}", v.end)) + inner_document := empty() + if len(v.elems) > 0 { + inner_document = cons( + newline_position(p, 1, v.elems[0].pos), + visit_comp_lit_exprs(p, v^, {.Add_Comma, .Trailing, .Enforce_Newline}), + ) + } else { + inner_document, _ = visit_comments(p, v.end) + } + document = cons(document, nest(inner_document), newline(1), text_position(p, "}", v.end)) } else { break_string := " " if v.type != nil else "" document = cons( |