From 6c271eb77a4a954dfb922302c4ac3aa6ff6c4576 Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Thu, 13 Feb 2025 18:44:46 -0500 Subject: [PATCH] feat: Handle in `needs_grouping` instead --- compiler/src/formatting/fmt.re | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/compiler/src/formatting/fmt.re b/compiler/src/formatting/fmt.re index cf0f826ae..e5b1c311d 100644 --- a/compiler/src/formatting/fmt.re +++ b/compiler/src/formatting/fmt.re @@ -259,6 +259,13 @@ let needs_grouping = (~parent, ~side: infix_side, expr) => { | (PExpConstant(PConstNumber(PConstNumberRational(_))), _) when op_precedence('/') <= precedence(parent) => ParenGrouping + | (PExpConstraint(_, _), _) + when + switch (parent.pexp_desc) { + | PExpConstraint(_, _) => true + | _ => false + } => + ParenGrouping | _ => FormatterGrouping }; }; @@ -2516,21 +2523,13 @@ let print_expression = (fmt, ~infix_wrap=d => group(indent(d)), expr) => { ) | PExpConstraint(inner_expr, typ) => ( - switch ( - inner_expr.pexp_desc, - needs_grouping(~parent=expr, ~side=Left, inner_expr), - ) { - | (PExpConstraint(_, _), typ) => - parens( - indent(break ++ fmt.print_expression(fmt, inner_expr)) ++ break, - ) - | (_, ParenGrouping) => + switch (needs_grouping(~parent=expr, ~side=Left, inner_expr)) { + | ParenGrouping => parens( indent(break ++ fmt.print_expression(fmt, inner_expr)) ++ break, ) - | (_, FormatterGrouping) => - group(fmt.print_expression(fmt, inner_expr)) - | (_, None) => fmt.print_expression(fmt, inner_expr) + | FormatterGrouping => group(fmt.print_expression(fmt, inner_expr)) + | None => fmt.print_expression(fmt, inner_expr) } ) ++ string(":")