From 3ed782050acfa0967c0dca13ae44363541914262 Mon Sep 17 00:00:00 2001 From: Iwan Date: Thu, 31 Dec 2020 13:56:24 +0100 Subject: [PATCH 1/2] Convert Reason fast pipe with uncurried functions to ReScript correct --- src/res_ast_conversion.ml | 2 +- .../reason/__snapshots__/render.spec.js.snap | 17 +++++++++++++++++ tests/conversion/reason/uncurrried.re | 19 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/res_ast_conversion.ml b/src/res_ast_conversion.ml index 1761d73b..cd7418c9 100644 --- a/src/res_ast_conversion.ml +++ b/src/res_ast_conversion.ml @@ -74,7 +74,7 @@ let rec rewriteReasonFastPipe expr = let rhsLoc = {rhs.pexp_loc with loc_end = expr.pexp_loc.loc_end} in let newLhs = let expr = rewriteReasonFastPipe lhs in - {expr with pexp_attributes = subAttrs} + {expr with pexp_attributes = List.concat [lhs.pexp_attributes; subAttrs]} in let newRhs = { pexp_loc = rhsLoc; diff --git a/tests/conversion/reason/__snapshots__/render.spec.js.snap b/tests/conversion/reason/__snapshots__/render.spec.js.snap index 05fe37ab..86d1b6fc 100644 --- a/tests/conversion/reason/__snapshots__/render.spec.js.snap +++ b/tests/conversion/reason/__snapshots__/render.spec.js.snap @@ -1392,6 +1392,23 @@ let () = { // ok dontDoThisAhome(. a, b)(. c, d)(. e, f) } + +let _ = + library.getBalance(. account)->Promise.Js.catch(_ => Promise.resolved(None)) + +let _ = + library.getBalance(. account) + ->Promise.Js.catch(_ => Promise.resolved(None)) + ->Promise.get(newBalance => + dispatch( + LoadAddress( + account, + newBalance->Belt.Option.flatMap(balance => + Eth.make(balance.toString(.)) + ), + ), + ) + ) " `; diff --git a/tests/conversion/reason/uncurrried.re b/tests/conversion/reason/uncurrried.re index 9d13465c..f8815943 100644 --- a/tests/conversion/reason/uncurrried.re +++ b/tests/conversion/reason/uncurrried.re @@ -56,3 +56,22 @@ let () = { // ok dontDoThisAhome(. a, b)(. c, d)(. e, f) } + + +let _ = + library.getBalance(. account) + ->Promise.Js.catch(_ => Promise.resolved(None)) + +let _ = + library.getBalance(. account) + ->Promise.Js.catch(_ => {Promise.resolved(None)}) + ->Promise.get(newBalance => { + dispatch( + LoadAddress( + account, + newBalance->Belt.Option.flatMap(balance => + Eth.make(balance.toString(.)) + ), + ), + ) + }); From 00bf99561ed2255bd35a927700247d422a3fa05d Mon Sep 17 00:00:00 2001 From: Iwan Date: Thu, 31 Dec 2020 14:03:43 +0100 Subject: [PATCH 2/2] Add extra tests with Pexp_field lhs fast pipe --- .../__snapshots__/parse.spec.js.snap | 4 +++- tests/parsing/grammar/expressions/binary.js | 2 ++ .../expr/__snapshots__/render.spec.js.snap | 21 ++++++++++++++++ tests/printer/expr/binary.js | 24 +++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/tests/parsing/grammar/expressions/__snapshots__/parse.spec.js.snap b/tests/parsing/grammar/expressions/__snapshots__/parse.spec.js.snap index 4e73a422..ff5ff2b5 100644 --- a/tests/parsing/grammar/expressions/__snapshots__/parse.spec.js.snap +++ b/tests/parsing/grammar/expressions/__snapshots__/parse.spec.js.snap @@ -135,7 +135,9 @@ let x = a - b let x = a -. b ;;Constructor (a, b) ;;\`Constructor (a, b) -let _ = ((Constructor (a, b); \`Constructor (a, b))[@ns.braces ])" +let _ = ((Constructor (a, b); \`Constructor (a, b))[@ns.braces ]) +;;((library.getBalance account)[@bs ]) |. + (Promise.Js.catch (fun _ -> ((Promise.resolved None)[@ns.braces ])))" `; exports[`binaryNoEs6Arrow.js 1`] = ` diff --git a/tests/parsing/grammar/expressions/binary.js b/tests/parsing/grammar/expressions/binary.js index c9eb73d4..79e3cf63 100644 --- a/tests/parsing/grammar/expressions/binary.js +++ b/tests/parsing/grammar/expressions/binary.js @@ -43,3 +43,5 @@ let _ = { #Constructor(a, b) } +library.getBalance(. account) +->Promise.Js.catch(_ => {Promise.resolved(None)}) diff --git a/tests/printer/expr/__snapshots__/render.spec.js.snap b/tests/printer/expr/__snapshots__/render.spec.js.snap index 62862350..08806101 100644 --- a/tests/printer/expr/__snapshots__/render.spec.js.snap +++ b/tests/printer/expr/__snapshots__/render.spec.js.snap @@ -748,6 +748,27 @@ let aggregateTotal = (forecast, ~audienceType) => views: item[\\"reach\\"][\\"views\\"], sample: item[\\"reach\\"][\\"sample\\"], }) + +React.useEffect4(() => { + switch (context.library, context.account) { + | (Some(library), Some(account)) => + library.getBalance(. account) + ->Promise.Js.catch(_ => {Promise.resolved(None)}) + ->Promise.get(newBalance => { + dispatch( + LoadAddress( + account, + newBalance->Belt.Option.flatMap(balance => + Eth.make(balance.toString(.)) + ), + ), + ) + }) + + None + | _ => None + } +}, (context.library, context.account, context.chainId, dispatch)) " `; diff --git a/tests/printer/expr/binary.js b/tests/printer/expr/binary.js index bbb6ebc4..e227d9d6 100644 --- a/tests/printer/expr/binary.js +++ b/tests/printer/expr/binary.js @@ -364,3 +364,27 @@ let aggregateTotal = (forecast, ~audienceType) => views: item["reach"]["views"], sample: item["reach"]["sample"], }) + +React.useEffect4( + () => { + switch (context.library, context.account) { + | (Some(library), Some(account)) => + library.getBalance(. account) + ->Promise.Js.catch(_ => {Promise.resolved(None)}) + ->Promise.get(newBalance => { + dispatch( + LoadAddress( + account, + newBalance->Belt.Option.flatMap(balance => + Eth.make(balance.toString(.)) + ), + ), + ) + }) + + None + | _ => None + } + }, + (context.library, context.account, context.chainId, dispatch), +)