From 36d8a13f4dd97ead0dd7c295fbadad2835b2056c Mon Sep 17 00:00:00 2001 From: William Date: Wed, 4 Oct 2017 18:19:54 +0200 Subject: [PATCH] Fix catch error on do expression and add tests (#6372) Fixes #6331 --- .../test/fixtures/do-expressions/catch-block/actual.js | 7 +++++++ .../test/fixtures/do-expressions/catch-block/expected.js | 7 +++++++ .../test/fixtures/do-expressions/catch-block/options.json | 3 +++ packages/babel-traverse/src/path/family.js | 2 ++ 4 files changed, 19 insertions(+) create mode 100644 packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/actual.js create mode 100644 packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/expected.js create mode 100644 packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/options.json diff --git a/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/actual.js b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/actual.js new file mode 100644 index 0000000000..7f5ee43be8 --- /dev/null +++ b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/actual.js @@ -0,0 +1,7 @@ +const x = do { + try { + a(); + } catch (e) { + b(); + } +} diff --git a/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/expected.js b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/expected.js new file mode 100644 index 0000000000..d84bdcb1bf --- /dev/null +++ b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/expected.js @@ -0,0 +1,7 @@ +var x = function () { + try { + return a(); + } catch (e) { + return b(); + } +}(); diff --git a/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/options.json b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/options.json new file mode 100644 index 0000000000..61aac27ff0 --- /dev/null +++ b/packages/babel-plugin-transform-do-expressions/test/fixtures/do-expressions/catch-block/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-es2015-block-scoping", "transform-do-expressions"] +} diff --git a/packages/babel-traverse/src/path/family.js b/packages/babel-traverse/src/path/family.js index 9fe3ded555..7e02719978 100644 --- a/packages/babel-traverse/src/path/family.js +++ b/packages/babel-traverse/src/path/family.js @@ -33,6 +33,8 @@ export function getCompletionRecords(): Array { paths = addCompletionRecords(this.get("block"), paths); paths = addCompletionRecords(this.get("handler"), paths); paths = addCompletionRecords(this.get("finalizer"), paths); + } else if (this.isCatchClause()) { + paths = addCompletionRecords(this.get("body"), paths); } else { paths.push(this); }