From b5e0390cece651729da8f490ff27428410ac558b Mon Sep 17 00:00:00 2001 From: Nathan Walters Date: Sun, 11 Apr 2021 16:14:03 -0700 Subject: [PATCH 1/2] Fix printing of async arrow function with a single param and comments --- packages/babel-generator/src/generators/methods.ts | 8 +++++--- .../async-arrow-single-param-with-comments/input.js | 5 +++++ .../output.js | 13 +++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 packages/babel-generator/test/fixtures/comments/async-arrow-single-param-with-comments/input.js create mode 100644 packages/babel-generator/test/fixtures/comments/async-arrow-single-param-with-comments/output.js diff --git a/packages/babel-generator/src/generators/methods.ts b/packages/babel-generator/src/generators/methods.ts index 607aba90497d..af4eb6236584 100644 --- a/packages/babel-generator/src/generators/methods.ts +++ b/packages/babel-generator/src/generators/methods.ts @@ -119,9 +119,11 @@ export function ArrowFunctionExpression( ) { if ( (this.format.retainLines || node.async) && - node.loc && - node.body.loc && - node.loc.start.line < node.body.loc.start.line + ((node.loc && + node.body.loc && + node.loc.start.line < node.body.loc.start.line) || + firstParam.leadingComments?.length || + firstParam.trailingComments?.length) ) { this.token("("); if (firstParam.loc && firstParam.loc.start.line > node.loc.start.line) { diff --git a/packages/babel-generator/test/fixtures/comments/async-arrow-single-param-with-comments/input.js b/packages/babel-generator/test/fixtures/comments/async-arrow-single-param-with-comments/input.js new file mode 100644 index 000000000000..d82f1d4027bb --- /dev/null +++ b/packages/babel-generator/test/fixtures/comments/async-arrow-single-param-with-comments/input.js @@ -0,0 +1,5 @@ +async (/** @type {any} */ arg) => {}; + +async (arg /* trailing */) => {}; + +async (/** @type {any} */ arg /* trailing */) => {}; diff --git a/packages/babel-generator/test/fixtures/comments/async-arrow-single-param-with-comments/output.js b/packages/babel-generator/test/fixtures/comments/async-arrow-single-param-with-comments/output.js new file mode 100644 index 000000000000..e952f5d6f0ef --- /dev/null +++ b/packages/babel-generator/test/fixtures/comments/async-arrow-single-param-with-comments/output.js @@ -0,0 +1,13 @@ +async ( +/** @type {any} */ +arg) => {}; + +async (arg +/* trailing */ +) => {}; + +async ( +/** @type {any} */ +arg +/* trailing */ +) => {}; \ No newline at end of file From 075bff658a6fed7dc6654371405d8258ca2738b8 Mon Sep 17 00:00:00 2001 From: Nathan Walters Date: Sun, 11 Apr 2021 16:18:50 -0700 Subject: [PATCH 2/2] Add OVERWRITE support to generator tests --- packages/babel-generator/test/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index adbee798e783..e56cd9754e48 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -819,7 +819,13 @@ suites.forEach(function (testSuite) { console.log(`New test file created: ${expected.loc}`); fs.writeFileSync(expected.loc, result.code); } else { - expect(result.code).toBe(expected.code); + try { + expect(result.code).toBe(expected.code); + } catch (e) { + if (!process.env.OVERWRITE) throw e; + console.log(`Updated test file: ${expected.loc}`); + fs.writeFileSync(expected.loc, result.code); + } } } }