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"]
|
"presets": ["es2015", "react"]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,6 +65,9 @@ export default function ({ types: t }) {
|
|||||||
let args = node.arguments;
|
let args = node.arguments;
|
||||||
if (!hasSpread(args)) return;
|
if (!hasSpread(args)) return;
|
||||||
|
|
||||||
|
let calleePath = path.get("callee");
|
||||||
|
if (calleePath.isSuper()) return;
|
||||||
|
|
||||||
let contextLiteral = t.identifier("undefined");
|
let contextLiteral = t.identifier("undefined");
|
||||||
|
|
||||||
node.arguments = [];
|
node.arguments = [];
|
||||||
@ -85,7 +88,7 @@ export default function ({ types: t }) {
|
|||||||
|
|
||||||
let callee = node.callee;
|
let callee = node.callee;
|
||||||
|
|
||||||
if (path.get("callee").isMemberExpression()) {
|
if (calleePath.isMemberExpression()) {
|
||||||
let temp = scope.maybeGenerateMemoised(callee.object);
|
let temp = scope.maybeGenerateMemoised(callee.object);
|
||||||
if (temp) {
|
if (temp) {
|
||||||
callee.object = t.assignmentExpression("=", temp, callee.object);
|
callee.object = t.assignmentExpression("=", temp, callee.object);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user