ampproject / rollup-plugin-closure-compiler

Leverage Closure Compiler to minify and optimize JavaScript with Rollup.
Apache License 2.0
292 stars 27 forks source link

SyntaxError: Cannot use keyword 'await' outside an async function #466

Open icy0307 opened 1 year ago

icy0307 commented 1 year ago

What's the issue?

Exporting an async function with await keyword inside cause rollup-plugin-closure-compiler to report this error:

SyntaxError: Cannot use keyword 'await' outside an async function

How do we reproduce the issue?

  1. copy this to test folder test/export-default/async-function.test.js
    
    import { generator } from '../generator';

generator('export-default', 'async-function', false, ['esm'], {stable: {}});

Keep everything the same as the rest of the tests, except for making `language_out` as default to avoid polyfills, which simplifies the test.

2. the test in the fixtures folder 'test/export-default/fixtures/async-function.js'  
``` js
export async function asyncTest() {
    await Promise.resolve('async-test');
    console.log('async-test')
}

export async function asyncTestWithArgument(argument) {
    await Promise.resolve('async-test-with-argument');
    console.log(argument)
}

We'll likely need to know:

  1. Your Rollup configuration. As mentioned above, default options.
  2. Error logs from your console when invoking Rollup with this plugin present.

    
    Unhandled rejection in test/export-default/async-function.test.js
    
    /workspaces/rollup-plugin-closure-compiler/node_modules/acorn/dist/acorn.js:2927
    
    SyntaxError: Cannot use keyword 'await' outside an async function (1:21)
    
    Parser.pp$4.raise (node_modules/acorn/dist/acorn.js:2927:15)
    Parser.pp$3.checkUnreserved (node_modules/acorn/dist/acorn.js:2853:16)
    Parser.pp$3.parseIdent (node_modules/acorn/dist/acorn.js:2883:12)
    Parser.pp$3.parseExprAtom (node_modules/acorn/dist/acorn.js:2254:21)
    Parser.pp$3.parseExprSubscripts (node_modules/acorn/dist/acorn.js:2129:21)
    Parser.pp$3.parseMaybeUnary (node_modules/acorn/dist/acorn.js:2106:19)
    Parser.pp$3.parseExprOps (node_modules/acorn/dist/acorn.js:2041:21)
    Parser.pp$3.parseMaybeConditional (node_modules/acorn/dist/acorn.js:2024:21)
    Parser.pp$3.parseMaybeAssign (node_modules/acorn/dist/acorn.js:1997:21)
    Parser.pp$3.parseExpression (node_modules/acorn/dist/acorn.js:1963:21)

If this is a feature request you can use this section to point to a prototype/mockup that will help us understand the request.

Additional context

Add any other context about the problem here.