New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comment-related warnings when building with Vite #1916
Comments
kblcuk
added a commit
to kblcuk/fp-ts
that referenced
this issue
Jan 3, 2024
Currently there are some arrow functions that have /*#__PURE__*/ annotation before function call to identify that that function call is side effect free. However since this project is built to es5 target, which doesn't have arrow functions support, the code is then translated into regular function that loos something like this: ``` /** @internal */ export var flatMapNullable = function (F, M) { /*#__PURE__*/ return dual(3, function (self, f, onNullable) { return M.flatMap(self, liftNullable(F)(f, onNullable)); }); }; ``` However this makes some built tools (Vite (which uses Rollup under the hood) in our case) unhappy, and build produces a lot of warnings about that __PURE__ annotation being in the wrong place. Checking the Rollup docs [0], it seems that pure annotation should be placed right before function invocation, so in this particular case between `return` keyword and the actual function. So this simply changes arrow functions in question to have explicit return keyword and annotation before the function call, which leaves no interpretation to ts compiler, and makes our code build process warning-free. This also potentially fixes gcanti#1916 [0] https://rollupjs.org/configuration-options/#pure
FIY I stumbled upon the same issue and after some investigation I think I might have a fix 馃 |
gcanti
pushed a commit
that referenced
this issue
Jan 3, 2024
Currently there are some arrow functions that have /*#__PURE__*/ annotation before function call to identify that that function call is side effect free. However since this project is built to es5 target, which doesn't have arrow functions support, the code is then translated into regular function that loos something like this: ``` /** @internal */ export var flatMapNullable = function (F, M) { /*#__PURE__*/ return dual(3, function (self, f, onNullable) { return M.flatMap(self, liftNullable(F)(f, onNullable)); }); }; ``` However this makes some built tools (Vite (which uses Rollup under the hood) in our case) unhappy, and build produces a lot of warnings about that __PURE__ annotation being in the wrong place. Checking the Rollup docs [0], it seems that pure annotation should be placed right before function invocation, so in this particular case between `return` keyword and the actual function. So this simply changes arrow functions in question to have explicit return keyword and annotation before the function call, which leaves no interpretation to ts compiler, and makes our code build process warning-free. This also potentially fixes #1916 [0] https://rollupjs.org/configuration-options/#pure
How is the fix going? :) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
馃悰 Bug report
Current Behavior
When building a production bundle with Vite, I get a bunch of warnings like this:
Expected behavior
No build warnings.
Reproducible example
vite build
.You should be able to see the warnings in the build log.
Suggested solution(s)
Not sure - probably fix the comments somehow?
Your environment
Which versions of fp-ts are affected by this issue?
Did this work in previous versions of fp-ts?
Not sure - we just transitioned away from Create React App (where we didn't get these warnings) to Vite recently.
The text was updated successfully, but these errors were encountered: