diff --git a/CHANGELOG.md b/CHANGELOG.md index e172048c26..a2bab9ae70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ - Fix `Error.fromException`. https://github.com/rescript-lang/rescript/pull/7364 - Fix signature of `throw`. https://github.com/rescript-lang/rescript/pull/7365 +- Fix formatter adds superfluous parens in pipe chain. https://github.com/rescript-lang/rescript/pull/7370 #### :house: Internal diff --git a/compiler/syntax/src/res_parens.ml b/compiler/syntax/src/res_parens.ml index 8034e7cf59..2094a2c5fa 100644 --- a/compiler/syntax/src/res_parens.ml +++ b/compiler/syntax/src/res_parens.ml @@ -185,6 +185,7 @@ let flatten_operand_rhs parent_operator rhs = prec_parent >= prec_child || rhs.pexp_attributes <> [] | Pexp_constraint ({pexp_desc = Pexp_pack _}, {ptyp_desc = Ptyp_package _}) -> false + | Pexp_fun {lhs = {ppat_desc = Ppat_var {txt = "__x"}}} -> false | Pexp_fun _ | Pexp_newtype _ | Pexp_setfield _ | Pexp_constraint _ -> true | _ when ParsetreeViewer.is_ternary_expr rhs -> true | _ -> false diff --git a/tests/syntax_tests/data/printer/expr/expected/callback.res.txt b/tests/syntax_tests/data/printer/expr/expected/callback.res.txt index a2d661ce40..e7ee3eeb80 100644 --- a/tests/syntax_tests/data/printer/expr/expected/callback.res.txt +++ b/tests/syntax_tests/data/printer/expr/expected/callback.res.txt @@ -218,14 +218,14 @@ let f = () => { } myPromise -->(Js.Promise.then_(value => { +->Js.Promise.then_(value => { Js.log(value) Js.Promise.resolve(value + 2) -}, _)) -->(Js.Promise.then_(value => { +}, _) +->Js.Promise.then_(value => { Js.log(value) Js.Promise.resolve(value + 3) -}, _)) +}, _) ->Js.Promise.catch(err => { Js.log2("Failure!!", err) Js.Promise.resolve(-2) diff --git a/tests/syntax_tests/data/printer/expr/expected/underscoreApply.res.txt b/tests/syntax_tests/data/printer/expr/expected/underscoreApply.res.txt index dc50fb21da..315faac753 100644 --- a/tests/syntax_tests/data/printer/expr/expected/underscoreApply.res.txt +++ b/tests/syntax_tests/data/printer/expr/expected/underscoreApply.res.txt @@ -36,7 +36,7 @@ f((a, b) => List.length(_), a, b) f(a, b, _)(x, y) -f(a, b, _) f(a, b, _) + g(x, _, z) -f(a, b, _) + (g(x, _, z)) + h(alpha, beta, _) +f(a, b, _) + g(x, _, z) + h(alpha, beta, _) assert(f(a, b, _)) @@ -66,3 +66,8 @@ x => { // Comment 2 something() }, _) + +let status = + json + ->optional(field("status", string, _), _) + ->Option.mapOr(Status.Active, Status.fromString) diff --git a/tests/syntax_tests/data/printer/expr/underscoreApply.res b/tests/syntax_tests/data/printer/expr/underscoreApply.res index 6740f76784..91d8b053fe 100644 --- a/tests/syntax_tests/data/printer/expr/underscoreApply.res +++ b/tests/syntax_tests/data/printer/expr/underscoreApply.res @@ -71,3 +71,8 @@ underscoreWithComments( }, _, ) + +let status = + json + ->optional(field("status", string, _), _) + ->Option.mapOr(Status.Active, Status.fromString)