diff --git a/packages/babel-generator/src/generators/methods.js b/packages/babel-generator/src/generators/methods.js index 1019aba04c7c..e9d0c67bded7 100644 --- a/packages/babel-generator/src/generators/methods.js +++ b/packages/babel-generator/src/generators/methods.js @@ -112,7 +112,7 @@ export function ArrowFunctionExpression(node: Object) { !hasTypes(node, firstParam) ) { if ( - this.format.retainLines && + (this.format.retainLines || node.async) && node.loc && node.body.loc && node.loc.start.line < node.body.loc.start.line diff --git a/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/input.js b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/input.js new file mode 100644 index 000000000000..e47e7f048eb5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/input.js @@ -0,0 +1,10 @@ +const x = async ( + // some comment + a +) => { + return foo(await a); +}; + +function foo(a) { + return a; +} diff --git a/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/options.json b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/options.json new file mode 100644 index 000000000000..0967ef424bce --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/options.json @@ -0,0 +1 @@ +{} diff --git a/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/output.js b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/output.js new file mode 100644 index 000000000000..eaf8a9076d5a --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/output.js @@ -0,0 +1,8 @@ +const x = async ( // some comment + a) => { + return foo(await a); +}; + +function foo(a) { + return a; +}