diff --git a/parser/src/AST/Expression.hs b/parser/src/AST/Expression.hs index 3f9026457..74670e181 100644 --- a/parser/src/AST/Expression.hs +++ b/parser/src/AST/Expression.hs @@ -50,7 +50,7 @@ data Expr' | AccessFunction String | Update Expr [(String, Expr, Bool)] | Record [(String, Expr, Bool)] - | Parens Expr + | Parens Expr Bool -- for type checking and code gen only | Port PortImpl | GLShader String String Literal.GLShaderTipe diff --git a/parser/src/Parse/Expression.hs b/parser/src/Parse/Expression.hs index c43dd88b6..aed49b940 100644 --- a/parser/src/Parse/Expression.hs +++ b/parser/src/Parse/Expression.hs @@ -114,7 +114,7 @@ parensTerm = return $ case expressions of [expression] -> - A.at start end (E.Parens expression) + A.at start end (E.Parens expression multiline) _ -> A.at start end (E.Tuple expressions multiline) diff --git a/src/Format.hs b/src/Format.hs index f3fb265bd..84e6c2a6c 100644 --- a/src/Format.hs +++ b/src/Format.hs @@ -408,12 +408,15 @@ formatExpression inList aexpr = ] in vbox2 vStart $ vboxlist vPrefix ", " "}" pair pairs - AST.Expression.Parens expr -> + AST.Expression.Parens expr False -> hbox [ text "(" , formatExpression False expr , text ")" ] + AST.Expression.Parens expr True-> + vboxlist "( " "" ")" (formatExpression True) [expr] + AST.Expression.Port _ -> text "" AST.Expression.GLShader _ _ _ -> text "" diff --git a/tests/test-files/good/AllSyntax.elm b/tests/test-files/good/AllSyntax.elm index 66130dbf7..606eacd2d 100644 --- a/tests/test-files/good/AllSyntax.elm +++ b/tests/test-files/good/AllSyntax.elm @@ -198,6 +198,23 @@ parenthesizedExpressions = (1 + (2 * 3) / 4) |> ((+) 0) +multilineParenthesizedExpressions = + graphHeight + / ( if range == 0 then + 0.1 + else + toFloat range + ) + + +multilineParenthesizedExpressions = + ( if range == 0 then + 0.1 + else + toFloat range + ) + + recordAccess r = r.f1