mirror of
https://github.com/zebrajr/react.git
synced 2026-01-15 12:15:22 +00:00
Make React.__spread warn
This commit is contained in:
@@ -12,6 +12,20 @@
|
||||
module.exports = function autoImporter(babel) {
|
||||
const t = babel.types;
|
||||
|
||||
function getAssignIdent(path, file, state) {
|
||||
if (!state.id) {
|
||||
state.id = path.scope.generateUidIdentifier('assign');
|
||||
path.scope.getProgramParent().push({
|
||||
id: state.id,
|
||||
init: t.callExpression(
|
||||
t.identifier('require'),
|
||||
[t.stringLiteral('object-assign')]
|
||||
),
|
||||
});
|
||||
}
|
||||
return state.id;
|
||||
}
|
||||
|
||||
return {
|
||||
pre: function() {
|
||||
// map from module to generated identifier
|
||||
@@ -22,17 +36,15 @@ module.exports = function autoImporter(babel) {
|
||||
CallExpression: function(path, file) {
|
||||
if (path.get('callee').matchesPattern('Object.assign')) {
|
||||
// generate identifier and require if it hasn't been already
|
||||
if (!this.id) {
|
||||
this.id = path.scope.generateUidIdentifier('assign');
|
||||
path.scope.getProgramParent().push({
|
||||
id: this.id,
|
||||
init: t.callExpression(
|
||||
t.identifier('require'),
|
||||
[t.stringLiteral('object-assign')]
|
||||
),
|
||||
});
|
||||
}
|
||||
path.node.callee = this.id;
|
||||
var id = getAssignIdent(path, file, this);
|
||||
path.node.callee = id;
|
||||
}
|
||||
},
|
||||
|
||||
MemberExpression: function(path, file) {
|
||||
if (path.matchesPattern('Object.assign')) {
|
||||
var id = getAssignIdent(path, file, this);
|
||||
path.replaceWith(id);
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@@ -21,6 +21,7 @@ var ReactPropTypes = require('ReactPropTypes');
|
||||
var ReactVersion = require('ReactVersion');
|
||||
|
||||
var onlyChild = require('onlyChild');
|
||||
var warning = require('warning');
|
||||
|
||||
var createElement = ReactElement.createElement;
|
||||
var createFactory = ReactElement.createFactory;
|
||||
@@ -32,6 +33,23 @@ if (__DEV__) {
|
||||
cloneElement = ReactElementValidator.cloneElement;
|
||||
}
|
||||
|
||||
var __spread = Object.assign;
|
||||
|
||||
if (__DEV__) {
|
||||
var warned = false;
|
||||
__spread = function() {
|
||||
warning(
|
||||
warned,
|
||||
'React.__spread is deprecated and should not be used. Use ' +
|
||||
'Object.assign directly or another helper function with similar ' +
|
||||
'semantics. You may be seeing this warning due to your compiler. ' +
|
||||
'See https://fb.me/react-spread-deprecation for more details.'
|
||||
);
|
||||
warned = true;
|
||||
return Object.assign.apply(null, arguments);
|
||||
};
|
||||
}
|
||||
|
||||
var React = {
|
||||
|
||||
// Modern
|
||||
@@ -66,8 +84,8 @@ var React = {
|
||||
|
||||
version: ReactVersion,
|
||||
|
||||
// Hook for JSX spread, don't use this for anything else.
|
||||
__spread: Object.assign,
|
||||
// Deprecated hook for JSX spread, don't use this for anything.
|
||||
__spread: __spread,
|
||||
};
|
||||
|
||||
module.exports = React;
|
||||
|
||||
Reference in New Issue
Block a user