From 2b774f46fb8891b4c32848deb41ba8876ef08fc5 Mon Sep 17 00:00:00 2001 From: Sven SAULEAU Date: Wed, 22 Mar 2017 09:18:37 +0100 Subject: [PATCH] fix: handle bailed when recursive convert (#5499) --- .../test/fixtures/do-expressions/throw-if/actual.js | 5 +++++ .../test/fixtures/do-expressions/throw-if/expected.js | 5 +++++ packages/babel-types/src/converters.js | 5 ++++- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/throw-if/actual.js create mode 100644 packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/throw-if/expected.js diff --git a/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/throw-if/actual.js b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/throw-if/actual.js new file mode 100644 index 0000000000..9fba40f6b1 --- /dev/null +++ b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/throw-if/actual.js @@ -0,0 +1,5 @@ +const t = do { + if (true) { + throw new Error() + } +} diff --git a/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/throw-if/expected.js b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/throw-if/expected.js new file mode 100644 index 0000000000..143b365e55 --- /dev/null +++ b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/throw-if/expected.js @@ -0,0 +1,5 @@ +const t = function () { + if (true) { + throw new Error(); + } +}(); \ No newline at end of file diff --git a/packages/babel-types/src/converters.js b/packages/babel-types/src/converters.js index 686ac2d419..b6510c88d5 100644 --- a/packages/babel-types/src/converters.js +++ b/packages/babel-types/src/converters.js @@ -65,7 +65,10 @@ export function toSequenceExpression(nodes: Array, scope: Scope): ?Objec } else if (t.isIfStatement(node)) { const consequent = node.consequent ? convert([node.consequent]) : scope.buildUndefinedNode(); const alternate = node.alternate ? convert([node.alternate]) : scope.buildUndefinedNode(); - if (!consequent || !alternate) return bailed = true; + + if (consequent === true || alternate === true) { + return bailed = true; + } exprs.push(t.conditionalExpression(node.test, consequent, alternate)); } else if (t.isBlockStatement(node)) {