diff options
| author | Daniel Gavin <danielgavin5@hotmail.com> | 2022-01-11 02:17:03 +0100 |
|---|---|---|
| committer | Daniel Gavin <danielgavin5@hotmail.com> | 2022-01-11 02:17:03 +0100 |
| commit | eaa4b0accc83e1aaf4dcfcb41e1ad622be35ce39 (patch) | |
| tree | c5aca4d42650e607cd27208af2899cf454739566 /src | |
| parent | 0896e76ad5f604a2111d3f37f13f14f890a1e160 (diff) | |
odinfmt: add more field flag fixes
Diffstat (limited to 'src')
| -rw-r--r-- | src/odin/printer/visit.odin | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/src/odin/printer/visit.odin b/src/odin/printer/visit.odin index da36311..d7b3c85 100644 --- a/src/odin/printer/visit.odin +++ b/src/odin/printer/visit.odin @@ -883,7 +883,7 @@ visit_expr :: proc(p: ^Printer, expr: ^ast.Expr, called_from: Expr_Called_Type = document = cons(document, text(")")) return document case Ellipsis: - return cons_with_opl(text(".."), visit_expr(p, v.expr)) + return cons(text(".."), visit_expr(p, v.expr)) case Relative_Type: return cons_with_opl(visit_expr(p, v.tag), visit_expr(p, v.type)) case Slice_Expr: @@ -1281,7 +1281,6 @@ visit_field_list :: proc(p: ^Printer, list: ^ast.Field_List, options := List_Opt } visit_proc_type :: proc(p: ^Printer, proc_type: ast.Proc_Type) -> ^Document { - document := text("proc") explicit_calling := false @@ -1371,14 +1370,50 @@ visit_call_exprs :: proc(p: ^Printer, list: []^ast.Expr, ellipsis := false) -> ^ return document } +visit_field_flag :: proc(p: ^Printer, flags: ast.Field_Flags) -> ^Document { + + /* + Ellipsis, + Using, + No_Alias, + C_Vararg, + Auto_Cast, + Any_Int, + + Results, + Tags, + Default_Parameters, + Typeid_Token, + */ + + + document := empty() + + if .Auto_Cast in flags { + document = cons_with_nopl(document, text("#auto_cast")) + } + + if .Any_Int in flags { + document = cons_with_nopl(document, text("#any_int")) + } + + if .C_Vararg in flags { + document = cons_with_nopl(document, text("#c_vararg")) + } + + if .Using in flags { + document = cons_with_nopl(document, text("using")) + } + + return document +} + visit_signature_list :: proc(p: ^Printer, list: ^ast.Field_List, remove_blank := true) -> ^Document { document := empty() for field, i in list.list { - if .Using in field.flags { - document = cons(document, cons(text("using"), break_with_no_newline())) - } + document = cons(document, visit_field_flag(p, field.flags)) named := false @@ -1395,7 +1430,7 @@ visit_signature_list :: proc(p: ^Printer, list: ^ast.Field_List, remove_blank := } if named { - document = cons(document, visit_exprs(p, field.names, {.Add_Comma})) + document = cons_with_nopl(document, visit_exprs(p, field.names, {.Add_Comma})) if len(field.names) != 0 && field.type != nil { document = cons(document, cons(text(":"), break_with_no_newline())) |