diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index b160225288..7fe20066a2 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -199,7 +199,7 @@ export function AssignmentExpression(node: Object): boolean { } } -// Walk up the print stack to deterimine if our node can come first +// Walk up the print stack to determine if our node can come first // in statement. function isFirstInStatement( printStack: Array, diff --git a/packages/babel-generator/src/printer.js b/packages/babel-generator/src/printer.js index 59c183a867..0be50e0f29 100644 --- a/packages/babel-generator/src/printer.js +++ b/packages/babel-generator/src/printer.js @@ -246,8 +246,10 @@ export default class Printer { if (i === str.length) return; const cha = str[i]; - if (cha === "\n" || cha === "/") { - // we're going to break this terminator expression so we need to add a parentheses + const chaPost = str[i + 1]; + + // Check for newline or comment + if (cha === "\n" || (cha === "/" && (chaPost === "/" || chaPost === "*"))) { this.token("("); this.indent(); parenPushNewlineState.printed = true; diff --git a/packages/babel-generator/test/fixtures/types/ReturnStatement/actual.js b/packages/babel-generator/test/fixtures/types/ReturnStatement/actual.js index 338c84b966..cadd080008 100644 --- a/packages/babel-generator/test/fixtures/types/ReturnStatement/actual.js +++ b/packages/babel-generator/test/fixtures/types/ReturnStatement/actual.js @@ -9,3 +9,7 @@ function bar() { function foo() { return 1, "foo"; } + +() => { return /a/; } + +function foo() { return /a/; } diff --git a/packages/babel-generator/test/fixtures/types/ReturnStatement/expected.js b/packages/babel-generator/test/fixtures/types/ReturnStatement/expected.js index 00dbf4a891..7b72e8880c 100644 --- a/packages/babel-generator/test/fixtures/types/ReturnStatement/expected.js +++ b/packages/babel-generator/test/fixtures/types/ReturnStatement/expected.js @@ -8,4 +8,12 @@ function bar() { function foo() { return 1, "foo"; -} \ No newline at end of file +} + +() => { + return /a/; +}; + +function foo() { + return /a/; +} diff --git a/packages/babel-generator/test/fixtures/types/ThrowStatement/actual.js b/packages/babel-generator/test/fixtures/types/ThrowStatement/actual.js index 15dd4fc7b2..e399520fa3 100644 --- a/packages/babel-generator/test/fixtures/types/ThrowStatement/actual.js +++ b/packages/babel-generator/test/fixtures/types/ThrowStatement/actual.js @@ -1,3 +1,4 @@ throw err; throw Error("foobar"); throw new Error("foobar"); +throw /a/; diff --git a/packages/babel-generator/test/fixtures/types/ThrowStatement/expected.js b/packages/babel-generator/test/fixtures/types/ThrowStatement/expected.js index 02a2e9dde7..e399520fa3 100644 --- a/packages/babel-generator/test/fixtures/types/ThrowStatement/expected.js +++ b/packages/babel-generator/test/fixtures/types/ThrowStatement/expected.js @@ -1,3 +1,4 @@ throw err; throw Error("foobar"); -throw new Error("foobar"); \ No newline at end of file +throw new Error("foobar"); +throw /a/;