diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/actual.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/actual.js
new file mode 100644
index 0000000000..5236cd8118
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/actual.js
@@ -0,0 +1,28 @@
+var _ = require('underscore'),
+ React = require('react');
+
+class Hello extends React.Component
+{
+ state = {
+ hello: 1
+ };
+
+/*
+ constructor() {
+ super();
+ }
+*/
+
+ render() {
+ var props = _.omit(this.props, 'children');
+ return (
+
Hello
+ );
+ }
+
+ foo(param = 1) {
+ this.param = param;
+ }
+}
+
+module.exports = Hello;
diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/expected.js
new file mode 100644
index 0000000000..584e76fcf5
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/expected.js
@@ -0,0 +1,46 @@
+'use strict';
+
+var _ = require('underscore'),
+ React = require('react');
+
+var Hello = (function (_React$Component) {
+ babelHelpers.inherits(Hello, _React$Component);
+
+ function Hello() {
+ var _temp, _this;
+
+ babelHelpers.classCallCheck(this, Hello);
+ return babelHelpers.possibleConstructorReturn(_this, (_temp = (_this = babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(Hello).apply(this, arguments)), _this), _this.state = {
+ hello: 1
+ }, _temp));
+ }
+
+ babelHelpers.createClass(Hello, [{
+ key: 'render',
+
+ /*
+ constructor() {
+ super();
+ }
+ */
+
+ value: function render() {
+ var props = _.omit(this.props, 'children');
+ return React.createElement(
+ 'p',
+ babelHelpers.extends({ className: '1' }, props),
+ 'Hello'
+ );
+ }
+ }, {
+ key: 'foo',
+ value: function foo() {
+ var param = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0];
+
+ this.param = param;
+ }
+ }]);
+ return Hello;
+})(React.Component);
+
+module.exports = Hello;
diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/actual.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/actual.js
new file mode 100644
index 0000000000..d09ce3e2c5
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/actual.js
@@ -0,0 +1,15 @@
+import React, {Component} from 'react';
+
+export default class RandomComponent extends Component {
+ constructor(){
+ super();
+ }
+
+ render() {
+ return (
+
+
Hi there!
+
+ );
+ }
+}
diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/expected.js
new file mode 100644
index 0000000000..117ad3f785
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/expected.js
@@ -0,0 +1,36 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _react = require('react');
+
+var _react2 = babelHelpers.interopRequireDefault(_react);
+
+var RandomComponent = (function (_Component) {
+ babelHelpers.inherits(RandomComponent, _Component);
+
+ function RandomComponent() {
+ babelHelpers.classCallCheck(this, RandomComponent);
+ return babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(RandomComponent).call(this));
+ }
+
+ babelHelpers.createClass(RandomComponent, [{
+ key: 'render',
+ value: function render() {
+ return _react2.default.createElement(
+ 'div',
+ { className: 'sui-RandomComponent' },
+ _react2.default.createElement(
+ 'h2',
+ null,
+ 'Hi there!'
+ )
+ );
+ }
+ }]);
+ return RandomComponent;
+})(_react.Component);
+
+exports.default = RandomComponent;
diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json
index d3de7c728c..8338a70998 100644
--- a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json
+++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json
@@ -1,4 +1,4 @@
{
- "plugins": ["external-helpers-2"],
+ "plugins": ["external-helpers-2", "transform-class-properties"],
"presets": ["es2015", "react"]
}
diff --git a/packages/babel-plugin-transform-es2015-spread/src/index.js b/packages/babel-plugin-transform-es2015-spread/src/index.js
index 54dce19086..21f5f9c62f 100644
--- a/packages/babel-plugin-transform-es2015-spread/src/index.js
+++ b/packages/babel-plugin-transform-es2015-spread/src/index.js
@@ -65,6 +65,9 @@ export default function ({ types: t }) {
let args = node.arguments;
if (!hasSpread(args)) return;
+ let calleePath = path.get("callee");
+ if (calleePath.isSuper()) return;
+
let contextLiteral = t.identifier("undefined");
node.arguments = [];
@@ -85,7 +88,7 @@ export default function ({ types: t }) {
let callee = node.callee;
- if (path.get("callee").isMemberExpression()) {
+ if (calleePath.isMemberExpression()) {
let temp = scope.maybeGenerateMemoised(callee.object);
if (temp) {
callee.object = t.assignmentExpression("=", temp, callee.object);