Skip to content
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’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix __PURE__ annotation placement #1919

Merged
merged 2 commits into from Jan 3, 2024

Commits on Jan 3, 2024

  1. Fix __PURE__ annotation placement

    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
    kblcuk committed Jan 3, 2024
    Configuration menu
    Copy the full SHA
    54b79b1 View commit details
    Browse the repository at this point in the history
  2. Remove useless __PURE__ annotation

    It should be placed before function invocation, but here we're just
    mapping one function to another and casting it to `any`.
    kblcuk committed Jan 3, 2024
    Configuration menu
    Copy the full SHA
    0fcb2e4 View commit details
    Browse the repository at this point in the history