From 5244ecdd525330f8ee0202859cf68bf14367c39e Mon Sep 17 00:00:00 2001 From: Shulhi Sapli Date: Sun, 30 Mar 2025 10:07:39 +0800 Subject: [PATCH 1/2] Fix superfluous parens for underscore application --- compiler/syntax/src/res_parens.ml | 1 + .../data/printer/expr/expected/callback.res.txt | 8 ++++---- .../data/printer/expr/expected/underscoreApply.res.txt | 7 ++++++- tests/syntax_tests/data/printer/expr/underscoreApply.res | 5 +++++ 4 files changed, 16 insertions(+), 5 deletions(-) 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) From af4b4871f3ceb334d373f8c0fb9b65272c3e97a3 Mon Sep 17 00:00:00 2001 From: Shulhi Sapli Date: Sun, 30 Mar 2025 10:16:20 +0800 Subject: [PATCH 2/2] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 070d0df456..ee0ca01bfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ #### :bug: Bug fix - Fix `Error.fromException`. https://github.com/rescript-lang/rescript/pull/7364 +- Fix formatter adds superfluous parens in pipe chain. https://github.com/rescript-lang/rescript/pull/7370 #### :house: Internal