Remove indirection in checking propTypes (#9358)
* Remove indirection in checking propTypes * Silence flow errors
Dan Abramov committed
Apr 7, 2017 at 15:23 UTC
a8d37a7aa0033d1af9eb886509a96f778881fe12
5 files changed
+33
-37
src/isomorphic/classic/element/ReactElementValidator.js
+8
-3
@@ -21,13 +21,12 @@
21
var ReactCurrentOwner = require('ReactCurrentOwner');
22
var ReactElement = require('ReactElement');
23
24
-var checkReactTypeSpec = require('checkReactTypeSpec');
25
-
24
var canDefineProperty = require('canDefineProperty');
25
var getComponentName = require('getComponentName');
26
var getIteratorFn = require('getIteratorFn');
27
28
if (__DEV__) {
29
+ var checkPropTypes = require('checkPropTypes');
30
var warning = require('fbjs/lib/warning');
31
var ReactDebugCurrentFrame = require('ReactDebugCurrentFrame');
32
var {
@@ -193,7 +192,13 @@ function validatePropTypes(element) {
192
: componentClass.propTypes;
193
194
if (propTypes) {
196
- checkReactTypeSpec(propTypes, element.props, 'prop', name);
195
+ checkPropTypes(
196
+ propTypes,
197
+ element.props,
198
+ 'prop',
199
+ name,
200
+ ReactDebugCurrentFrame.getStackAddendum,
201
+ );
202
}
203
if (typeof componentClass.getDefaultProps === 'function') {
204
warning(
src/isomorphic/classic/types/__tests__/ReactPropTypes-test.js
+1
-3
@@ -13,7 +13,6 @@
13
14
var PropTypes;
15
var checkPropTypes;
16
-var checkReactTypeSpec;
16
var React;
17
var ReactDOM;
18
@@ -22,7 +21,6 @@ var MyComponent;
21
22
function resetWarningCache() {
23
jest.resetModules();
25
- checkReactTypeSpec = require('checkReactTypeSpec');
24
checkPropTypes = require('checkPropTypes');
25
}
26
@@ -33,7 +31,7 @@ function getPropTypeWarningMessage(propTypes, object, componentName) {
31
console.error.calls.reset();
32
}
33
resetWarningCache();
36
- checkReactTypeSpec(propTypes, object, 'prop', 'testComponent');
34
+ checkPropTypes(propTypes, object, 'prop', 'testComponent');
35
const callCount = console.error.calls.count();
36
if (callCount > 1) {
37
throw new Error('Too many warnings.');
src/renderers/shared/fiber/ReactFiberContext.js
+17
-3
@@ -15,6 +15,7 @@
15
import type {Fiber} from 'ReactFiber';
16
import type {StackCursor} from 'ReactFiberStack';
17
18
+var React = require('react');
19
var emptyObject = require('fbjs/lib/emptyObject');
20
var getComponentName = require('getComponentName');
21
var invariant = require('fbjs/lib/invariant');
@@ -33,7 +34,6 @@ const {
34
} = require('ReactFiberStack');
35
36
if (__DEV__) {
36
- var checkReactTypeSpec = require('checkReactTypeSpec');
37
var ReactDebugCurrentFrame = require('react/lib/ReactDebugCurrentFrame');
38
var ReactDebugCurrentFiber = require('ReactDebugCurrentFiber');
39
var {
@@ -105,7 +105,14 @@ exports.getMaskedContext = function(
105
if (__DEV__) {
106
const name = getComponentName(workInProgress) || 'Unknown';
107
ReactDebugCurrentFrame.current = workInProgress;
108
- checkReactTypeSpec(contextTypes, context, 'context', name);
108
+ // $FlowFixMe - We know this export exists now, need to wait for Flow update
109
+ React.checkPropTypes(
110
+ contextTypes,
111
+ context,
112
+ 'context',
113
+ name,
114
+ ReactDebugCurrentFrame.getStackAddendum,
115
+ );
116
ReactDebugCurrentFrame.current = null;
117
}
118
@@ -212,7 +219,14 @@ function processChildContext(
219
// TODO: remove this hack when we delete unstable_renderSubtree in Fiber.
220
const workInProgress = isReconciling ? fiber : null;
221
ReactDebugCurrentFrame.current = workInProgress;
215
- checkReactTypeSpec(childContextTypes, childContext, 'child context', name);
222
+ // $FlowFixMe - We know this export exists now, need to wait for Flow update
223
+ React.checkPropTypes(
224
+ childContextTypes,
225
+ childContext,
226
+ 'child context',
227
+ name,
228
+ ReactDebugCurrentFrame.getStackAddendum,
229
+ );
230
ReactDebugCurrentFrame.current = null;
231
}
232
src/renderers/shared/stack/reconciler/ReactCompositeComponent.js
+7
-2
@@ -23,7 +23,6 @@ var ReactNodeTypes = require('ReactNodeTypes');
23
var ReactReconciler = require('ReactReconciler');
24
25
if (__DEV__) {
26
- var checkReactTypeSpec = require('checkReactTypeSpec');
26
var ReactDebugCurrentFrame = require('react/lib/ReactDebugCurrentFrame');
27
var warningAboutMissingGetChildContext = {};
28
}
@@ -730,7 +729,13 @@ var ReactCompositeComponent = {
729
_checkContextTypes: function(typeSpecs, values, location: string) {
730
if (__DEV__) {
731
ReactDebugCurrentFrame.current = this._debugID;
733
- checkReactTypeSpec(typeSpecs, values, location, this.getName());
732
+ React.checkPropTypes(
733
+ typeSpecs,
734
+ values,
735
+ location,
736
+ this.getName(),
737
+ ReactDebugCurrentFrame.getStackAddendum,
738
+ );
739
ReactDebugCurrentFrame.current = null;
740
}
741
},
src/shared/types/checkReactTypeSpec.js
deleted
-26
@@ -1,26 +0,0 @@
1
-/**
2
- * Copyright 2013-present, Facebook, Inc.
3
- * All rights reserved.
4
- *
5
- * This source code is licensed under the BSD-style license found in the
6
- * LICENSE file in the root directory of this source tree. An additional grant
7
- * of patent rights can be found in the PATENTS file in the same directory.
8
- *
9
- * @providesModule checkReactTypeSpec
10
- */
11
-
12
-'use strict';
13
-
14
-var checkPropTypes = require('react/lib/checkPropTypes');
15
-var {getStackAddendum} = require('react/lib/ReactDebugCurrentFrame');
16
-
17
-function checkReactTypeSpec(
18
- typeSpecs,
19
- values,
20
- location: string,
21
- componentName,
22
-) {
23
- checkPropTypes(typeSpecs, values, location, componentName, getStackAddendum);
24
-}
25
-
26
-module.exports = checkReactTypeSpec;