diff --git a/packages/babel-helper-replace-supers/src/index.js b/packages/babel-helper-replace-supers/src/index.js index 6af12830dc..dff7328e68 100644 --- a/packages/babel-helper-replace-supers/src/index.js +++ b/packages/babel-helper-replace-supers/src/index.js @@ -53,7 +53,9 @@ const visitor = { }, ReturnStatement(path, state) { - state.returns.push(path); + if (!path.getFunctionParent().isArrowFunctionExpression()) { + state.returns.push(path); + } }, ThisExpression(path, state) { diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/5817/actual.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/5817/actual.js new file mode 100644 index 0000000000..b4ffadfbba --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/5817/actual.js @@ -0,0 +1,8 @@ +class A extends B { + constructor() { + super(); + + this.arrow1 = (x) => { return x; }; + this.arrow2 = (x) => x; + } +} diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/5817/exec.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/5817/exec.js new file mode 100644 index 0000000000..16c12bc3c2 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/5817/exec.js @@ -0,0 +1,16 @@ +// https://github.com/babel/babel/issues/5817 + +class Parent {} + +class Table extends Parent { + constructor() { + super(); + this.returnParam = (param) => { + return param; + } + } +} + +const table = new Table(); + +assert(table.returnParam(false) === false); diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/5817/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/5817/expected.js new file mode 100644 index 0000000000..15d9c7f2a5 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/5817/expected.js @@ -0,0 +1,24 @@ +"use strict"; + +var A = function (_B) { + babelHelpers.inherits(A, _B); + + function A() { + var _this; + + babelHelpers.classCallCheck(this, A); + _this = babelHelpers.possibleConstructorReturn(this, (A.__proto__ || Object.getPrototypeOf(A)).call(this)); + + _this.arrow1 = function (x) { + return x; + }; + + _this.arrow2 = function (x) { + return x; + }; + + return _this; + } + + return A; +}(B);