aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Gavin <danielgavin5@hotmail.com>2022-01-11 02:17:03 +0100
committerDaniel Gavin <danielgavin5@hotmail.com>2022-01-11 02:17:03 +0100
commiteaa4b0accc83e1aaf4dcfcb41e1ad622be35ce39 (patch)
treec5aca4d42650e607cd27208af2899cf454739566 /src
parent0896e76ad5f604a2111d3f37f13f14f890a1e160 (diff)
odinfmt: add more field flag fixes
Diffstat (limited to 'src')
-rw-r--r--src/odin/printer/visit.odin47
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()))