ignore callee supers when doing spread compilation - fixes #2775

This commit is contained in:
Sebastian McKenzie 2015-11-12 01:59:07 -08:00
parent 69fb1854d7
commit f91cfa68b9
6 changed files with 130 additions and 2 deletions

View File

@ -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 (
<p className="1" {... props}>Hello</p>
);
}
foo(param = 1) {
this.param = param;
}
}
module.exports = Hello;

View File

@ -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;

View File

@ -0,0 +1,15 @@
import React, {Component} from 'react';
export default class RandomComponent extends Component {
constructor(){
super();
}
render() {
return (
<div className='sui-RandomComponent'>
<h2>Hi there!</h2>
</div>
);
}
}

View File

@ -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;

View File

@ -1,4 +1,4 @@
{
"plugins": ["external-helpers-2"],
"plugins": ["external-helpers-2", "transform-class-properties"],
"presets": ["es2015", "react"]
}

View File

@ -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);