diff options
| author | Daniel Gavin <danielgavin5@hotmail.com> | 2022-08-19 00:03:47 +0200 |
|---|---|---|
| committer | Daniel Gavin <danielgavin5@hotmail.com> | 2022-08-19 00:03:47 +0200 |
| commit | d8ec8c5c098ae2829e4916d7a33b6dbe7d515df7 (patch) | |
| tree | 18fafd4ebda4100cdfb404048a22e6f1a3340f31 /src | |
| parent | 599c906489bab115bf79cbde30e28a46eba2d4d2 (diff) | |
Fix ternary expression not breaking correctly.
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.odin | 2 | ||||
| -rw-r--r-- | src/odin/printer/visit.odin | 42 |
2 files changed, 30 insertions, 14 deletions
diff --git a/src/main.odin b/src/main.odin index 29bfd41..ac9cf72 100644 --- a/src/main.odin +++ b/src/main.odin @@ -112,7 +112,7 @@ main :: proc() { context.logger = log.create_file_logger(fh, log.Level.Info) */ - when ODIN_DEBUG { + when ODIN_DEBUG && ODIN_OS == .Windows { set_stacktrace() } diff --git a/src/odin/printer/visit.odin b/src/odin/printer/visit.odin index 875b230..ad123b1 100644 --- a/src/odin/printer/visit.odin +++ b/src/odin/printer/visit.odin @@ -1089,18 +1089,35 @@ visit_expr :: proc(p: ^Printer, expr: ^ast.Expr, called_from: Expr_Called_Type = document = cons_with_nopl(text_token(p, v.op), visit_expr(p, v.expr)) case ^Ternary_If_Expr: if v.op1.text == "if" { - document = group(visit_expr(p, v.x)) - document = cons_with_nopl(document, text_token(p, v.op1)) - document = cons_with_opl(document, group(visit_expr(p, v.cond))) - document = cons_with_nopl(document, text_token(p, v.op2)) - document = cons_with_opl(document, group(visit_expr(p, v.y))) + document = cons( + group(visit_expr(p, v.x)), + if_break(" \\"), + break_with_space(), + text_token(p, v.op1), + break_with_no_newline(), + group(visit_expr(p, v.cond)), + if_break(" \\"), + break_with_space(), + text_token(p, v.op2), + break_with_no_newline(), + group(visit_expr(p, v.y)), + ) } else { - document = group(visit_expr(p, v.cond)) - document = cons_with_nopl(document, text_token(p, v.op1)) - document = cons_with_opl(document, group(visit_expr(p, v.x))) - document = cons_with_nopl(document, text_token(p, v.op2)) - document = cons_with_opl(document, group(visit_expr(p, v.y))) - } + document = cons( + group(visit_expr(p, v.cond)), + if_break(" \\"), + break_with_space(), + text_token(p, v.op1), + break_with_no_newline(), + group(visit_expr(p,v.x)), + if_break(" \\"), + break_with_space(), + text_token(p, v.op2), + break_with_no_newline(), + group(visit_expr(p, v.y)), + ) + } + document = group(document) case ^Ternary_When_Expr: document = visit_expr(p, v.x) document = cons_with_nopl(document, text_token(p, v.op1)) @@ -1264,6 +1281,7 @@ visit_expr :: proc(p: ^Printer, expr: ^ast.Expr, called_from: Expr_Called_Type = document = cons_with_nopl(document, visit_proc_type(p, v.type^, v.body != nil)) document = cons_with_nopl(document, push_where_clauses(p, v.where_clauses)) + document = cons_with_opl(document, visit_proc_tags(p, v.tags)) if v.body != nil { set_source_position(p, v.body.pos) @@ -1710,8 +1728,6 @@ visit_proc_type :: proc(p: ^Printer, proc_type: ast.Proc_Type, contains_body: bo document = cons_with_nopl(document, text("!")) } - document = cons_with_opl(document, visit_proc_tags(p, proc_type.tags)) - return group(document) } |