ignore callee supers when doing spread compilation - fixes #2775
This commit is contained in:
parent
69fb1854d7
commit
f91cfa68b9
28
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/actual.js
vendored
Normal file
28
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/actual.js
vendored
Normal 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;
|
||||
46
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/expected.js
vendored
Normal file
46
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775-1/expected.js
vendored
Normal 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;
|
||||
15
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/actual.js
vendored
Normal file
15
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/actual.js
vendored
Normal 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>
|
||||
);
|
||||
}
|
||||
}
|
||||
36
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/expected.js
vendored
Normal file
36
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2775/expected.js
vendored
Normal 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;
|
||||
@ -1,4 +1,4 @@
|
||||
{
|
||||
"plugins": ["external-helpers-2"],
|
||||
"plugins": ["external-helpers-2", "transform-class-properties"],
|
||||
"presets": ["es2015", "react"]
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user