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(.)) + ), + ), + ) + }); 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), +)