aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gavin <danielgavin5@hotmail.com>2022-07-20 14:02:43 +0200
committerDaniel Gavin <danielgavin5@hotmail.com>2022-07-20 14:02:43 +0200
commit9087a6e0ec7c2dfe2fe7b8bd9dfde8817afbd16d (patch)
tree4ad3f17f78e65a2737eeaa152b74624ed6cbf431
parent77e6e2804dcbcb5fe1935682199062c0adac758e (diff)
Add better handling of ternary expressions
-rw-r--r--src/odin/printer/visit.odin14
-rw-r--r--tools/odinfmt/tests/.snapshots/binary_expressions.odin3
-rw-r--r--tools/odinfmt/tests/binary_expressions.odin3
3 files changed, 10 insertions, 10 deletions
diff --git a/src/odin/printer/visit.odin b/src/odin/printer/visit.odin
index 2bc9e2a..44d0b40 100644
--- a/src/odin/printer/visit.odin
+++ b/src/odin/printer/visit.odin
@@ -360,7 +360,7 @@ is_values_nestable_assign :: proc(list: []^ast.Expr) -> bool {
for expr in list {
#partial switch v in expr.derived {
- case ^ast.Ident, ^ast.Binary_Expr, ^ast.Index_Expr, ^ast.Selector_Expr,
+ case ^ast.Ident, ^ast.Binary_Expr, ^ast.Index_Expr, ^ast.Selector_Expr, ^ast.Paren_Expr,
^ast.Ternary_If_Expr, ^ast.Ternary_When_Expr, ^ast.Or_Else_Expr, ^ast.Or_Return_Expr:
return true
}
@@ -1032,17 +1032,17 @@ 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 = visit_expr(p, v.x)
+ document = group(visit_expr(p, v.x))
document = cons_with_nopl(document, text_token(p, v.op1))
- document = cons_with_nopl(document, visit_expr(p, v.cond))
+ document = cons_with_opl(document, group(visit_expr(p, v.cond)))
document = cons_with_nopl(document, text_token(p, v.op2))
- document = cons_with_nopl(document, visit_expr(p, v.y))
+ document = cons_with_opl(document, group(visit_expr(p, v.y)))
} else {
- document = visit_expr(p, v.cond)
+ document = group(visit_expr(p, v.cond))
document = cons_with_nopl(document, text_token(p, v.op1))
- document = cons_with_nopl(document, visit_expr(p, v.x))
+ document = cons_with_opl(document, group(visit_expr(p, v.x)))
document = cons_with_nopl(document, text_token(p, v.op2))
- document = cons_with_nopl(document, visit_expr(p, v.y))
+ document = cons_with_opl(document, group(visit_expr(p, v.y)))
}
case ^Ternary_When_Expr:
document = visit_expr(p, v.cond)
diff --git a/tools/odinfmt/tests/.snapshots/binary_expressions.odin b/tools/odinfmt/tests/.snapshots/binary_expressions.odin
index e92dea5..94f381f 100644
--- a/tools/odinfmt/tests/.snapshots/binary_expressions.odin
+++ b/tools/odinfmt/tests/.snapshots/binary_expressions.odin
@@ -60,5 +60,6 @@ binary :: proc() {
) +
11111111111111111111111111111111111111
-
+ incidentFace =
+ (((incidentFace + 1) < incData.vertexCount) ? (incidentFace + 1) : 0)
}
diff --git a/tools/odinfmt/tests/binary_expressions.odin b/tools/odinfmt/tests/binary_expressions.odin
index fed88ca..1c5b910 100644
--- a/tools/odinfmt/tests/binary_expressions.odin
+++ b/tools/odinfmt/tests/binary_expressions.odin
@@ -31,6 +31,5 @@ binary :: proc() {
b = my_cool_function(aaaaaaaaaaaa, bbbbbbbbbbbbbbbbbbbbb, ccccccccccccccccccc) + 11111111111111111111111111111111111111
-
-
+ incidentFace = (((incidentFace + 1) < incData.vertexCount) ? (incidentFace + 1) : 0)
}