aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Gavin <danielgavin5@hotmail.com>2022-08-19 00:03:47 +0200
committerDaniel Gavin <danielgavin5@hotmail.com>2022-08-19 00:03:47 +0200
commitd8ec8c5c098ae2829e4916d7a33b6dbe7d515df7 (patch)
tree18fafd4ebda4100cdfb404048a22e6f1a3340f31 /src
parent599c906489bab115bf79cbde30e28a46eba2d4d2 (diff)
Fix ternary expression not breaking correctly.
Diffstat (limited to 'src')
-rw-r--r--src/main.odin2
-rw-r--r--src/odin/printer/visit.odin42
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)
}