@samitouri / QOS-React / commits / de05d2eded

Remove disableNewFiberFeatures flag (#10585)

Dan Abramov committed Aug 31, 2017 at 18:23 UTC de05d2ededfee911c500a42d02b4661854051b3c
27 files changed +92 -378
src/isomorphic/children/__tests__/ReactChildren-test.js
-6
@@ -16,7 +16,6 @@ const ReactDOMFeatureFlags = require('ReactDOMFeatureFlags');
16 describe('ReactChildren', () => {
17 var React;
18 var ReactTestUtils;
19 - var ReactFeatureFlags;
19
20 function normalizeCodeLocInfo(str) {
21 return str && str.replace(/at .+?:\d+/g, 'at **');
@@ -883,11 +882,6 @@ describe('ReactChildren', () => {
882
883 if (ReactDOMFeatureFlags.useFiber) {
884 describe('with fragments enabled', () => {
886 - beforeEach(() => {
887 - ReactFeatureFlags = require('ReactFeatureFlags');
888 - ReactFeatureFlags.disableNewFiberFeatures = false;
889 - });
890 -
885 it('warns for keys for arrays of elements in a fragment', () => {
886 spyOn(console, 'error');
887 class ComponentReturningArray extends React.Component {
src/renderers/__tests__/ReactComponent-test.js
-4
@@ -496,10 +496,6 @@ describe('ReactComponent', () => {
496
497 if (ReactDOMFeatureFlags.useFiber) {
498 describe('with new features', () => {
499 - beforeEach(() => {
500 - require('ReactFeatureFlags').disableNewFiberFeatures = false;
501 - });
502 -
499 it('warns on function as a return value from a function', () => {
500 function Foo() {
501 return Foo;
src/renderers/__tests__/ReactEmptyComponent-test.js
+22 -27
@@ -13,10 +13,11 @@
13
14 var React;
15 var ReactDOM;
16 -var ReactDOMFeatureFlags;
16 var ReactTestUtils;
17 var TogglingComponent;
18
19 +var ReactDOMFeatureFlags = require('ReactDOMFeatureFlags');
20 +
21 var log;
22
23 describe('ReactEmptyComponent', () => {
@@ -25,7 +26,6 @@ describe('ReactEmptyComponent', () => {
26
27 React = require('react');
28 ReactDOM = require('react-dom');
28 - ReactDOMFeatureFlags = require('ReactDOMFeatureFlags');
29 ReactTestUtils = require('react-dom/test-utils');
30
31 log = jasmine.createSpy();
@@ -71,18 +71,20 @@ describe('ReactEmptyComponent', () => {
71 expect(container2.children.length).toBe(0);
72 });
73
74 - it('should still throw when rendering to undefined', () => {
75 - class Component extends React.Component {
76 - render() {}
77 - }
74 + if (ReactDOMFeatureFlags.useFiber) {
75 + it('should still throw when rendering to undefined', () => {
76 + class Component extends React.Component {
77 + render() {}
78 + }
79
79 - expect(function() {
80 - ReactTestUtils.renderIntoDocument(<Component />);
81 - }).toThrowError(
82 - 'Component.render(): A valid React element (or null) must be returned. You may ' +
83 - 'have returned undefined, an array or some other invalid object.',
84 - );
85 - });
80 + expect(function() {
81 + ReactTestUtils.renderIntoDocument(<Component />);
82 + }).toThrowError(
83 + 'Component(...): Nothing was returned from render. This usually means a return statement is missing. ' +
84 + 'Or, to render nothing, return null.',
85 + );
86 + });
87 + }
88
89 it('should be able to switch between rendering null and a normal tag', () => {
90 var instance1 = (
@@ -232,22 +234,15 @@ describe('ReactEmptyComponent', () => {
234 });
235
236 it('can render null at the top level', () => {
235 - var ReactFeatureFlags = require('ReactFeatureFlags');
236 - ReactFeatureFlags.disableNewFiberFeatures = false;
237 var div = document.createElement('div');
238 -
239 - try {
240 - if (ReactDOMFeatureFlags.useFiber) {
238 + if (ReactDOMFeatureFlags.useFiber) {
239 + ReactDOM.render(null, div);
240 + expect(div.innerHTML).toBe('');
241 + } else {
242 + // Stack does not implement this.
243 + expect(function() {
244 ReactDOM.render(null, div);
242 - expect(div.innerHTML).toBe('');
243 - } else {
244 - // Stack does not implement this.
245 - expect(function() {
246 - ReactDOM.render(null, div);
247 - }).toThrowError('ReactDOM.render(): Invalid component element.');
248 - }
249 - } finally {
250 - ReactFeatureFlags.disableNewFiberFeatures = true;
245 + }).toThrowError('ReactDOM.render(): Invalid component element.');
246 }
247 });
248
src/renderers/__tests__/ReactStatelessComponent-test.js
+11 -9
@@ -157,15 +157,17 @@ describe('ReactStatelessComponent', () => {
157 });
158 }
159
160 - it('should throw when stateless component returns undefined', () => {
161 - function NotAComponent() {}
162 - expect(function() {
163 - ReactTestUtils.renderIntoDocument(<div><NotAComponent /></div>);
164 - }).toThrowError(
165 - 'NotAComponent(...): A valid React element (or null) must be returned. ' +
166 - 'You may have returned undefined, an array or some other invalid object.',
167 - );
168 - });
160 + if (ReactDOMFeatureFlags.useFiber) {
161 + it('should throw when stateless component returns undefined', () => {
162 + function NotAComponent() {}
163 + expect(function() {
164 + ReactTestUtils.renderIntoDocument(<div><NotAComponent /></div>);
165 + }).toThrowError(
166 + 'NotAComponent(...): Nothing was returned from render. ' +
167 + 'This usually means a return statement is missing. Or, to render nothing, return null.',
168 + );
169 + });
170 + }
171
172 it('should throw on string refs in pure functions', () => {
173 function Child() {
src/renderers/__tests__/refs-test.js
-5
@@ -394,11 +394,6 @@ describe('string refs between fiber and stack', () => {
394 });
395
396 describe('root level refs', () => {
397 - beforeEach(() => {
398 - var ReactFeatureFlags = require('ReactFeatureFlags');
399 - ReactFeatureFlags.disableNewFiberFeatures = false;
400 - });
401 -
397 it('attaches and detaches root refs', () => {
398 var ReactDOM = require('react-dom');
399 var inst = null;
src/renderers/dom/ReactDOMNodeStreamRenderer.js
-18
@@ -11,11 +11,7 @@
11
12 'use strict';
13
14 -var invariant = require('fbjs/lib/invariant');
15 -var React = require('react');
14 var ReactPartialRenderer = require('ReactPartialRenderer');
17 -var ReactFeatureFlags = require('ReactFeatureFlags');
18 -
15 var Readable = require('stream').Readable;
16
17 // This is a Readable Node.js stream which wraps the ReactDOMPartialRenderer.
@@ -41,13 +37,6 @@ class ReactMarkupReadableStream extends Readable {
37 * See https://facebook.github.io/react/docs/react-dom-stream.html#rendertonodestream
38 */
39 function renderToNodeStream(element) {
44 - const disableNewFiberFeatures = ReactFeatureFlags.disableNewFiberFeatures;
45 - if (disableNewFiberFeatures) {
46 - invariant(
47 - React.isValidElement(element),
48 - 'renderToNodeStream(): Invalid component element.',
49 - );
50 - }
40 return new ReactMarkupReadableStream(element, false);
41 }
42
@@ -57,13 +46,6 @@ function renderToNodeStream(element) {
46 * See https://facebook.github.io/react/docs/react-dom-stream.html#rendertostaticnodestream
47 */
48 function renderToStaticNodeStream(element) {
60 - const disableNewFiberFeatures = ReactFeatureFlags.disableNewFiberFeatures;
61 - if (disableNewFiberFeatures) {
62 - invariant(
63 - React.isValidElement(element),
64 - 'renderToStaticNodeStream(): Invalid component element.',
65 - );
66 - }
49 return new ReactMarkupReadableStream(element, true);
50 }
51
src/renderers/dom/ReactDOMStringRenderer.js
-17
@@ -11,10 +11,7 @@
11
12 'use strict';
13
14 -var invariant = require('fbjs/lib/invariant');
15 -var React = require('react');
14 var ReactPartialRenderer = require('ReactPartialRenderer');
17 -var ReactFeatureFlags = require('ReactFeatureFlags');
15
16 /**
17 * Render a ReactElement to its initial HTML. This should only be used on the
@@ -22,13 +19,6 @@ var ReactFeatureFlags = require('ReactFeatureFlags');
19 * See https://facebook.github.io/react/docs/react-dom-server.html#rendertostring
20 */
21 function renderToString(element) {
25 - const disableNewFiberFeatures = ReactFeatureFlags.disableNewFiberFeatures;
26 - if (disableNewFiberFeatures) {
27 - invariant(
28 - React.isValidElement(element),
29 - 'renderToString(): Invalid component element.',
30 - );
31 - }
22 var renderer = new ReactPartialRenderer(element, false);
23 var markup = renderer.read(Infinity);
24 return markup;
@@ -40,13 +30,6 @@ function renderToString(element) {
30 * See https://facebook.github.io/react/docs/react-dom-server.html#rendertostaticmarkup
31 */
32 function renderToStaticMarkup(element) {
43 - const disableNewFiberFeatures = ReactFeatureFlags.disableNewFiberFeatures;
44 - if (disableNewFiberFeatures) {
45 - invariant(
46 - React.isValidElement(element),
47 - 'renderToStaticMarkup(): Invalid component element.',
48 - );
49 - }
33 var renderer = new ReactPartialRenderer(element, true);
34 var markup = renderer.read(Infinity);
35 return markup;
src/renderers/dom/__tests__/ReactDOMProduction-test.js
+3 -2
@@ -197,6 +197,7 @@ describe('ReactDOMProduction', () => {
197 });
198
199 it('should throw with an error code in production', () => {
200 + const errorCode = ReactDOMFeatureFlags.useFiber ? 152 : 109;
201 expect(function() {
202 class Component extends React.Component {
203 render() {
@@ -207,8 +208,8 @@ describe('ReactDOMProduction', () => {
208 var container = document.createElement('div');
209 ReactDOM.render(<Component />, container);
210 }).toThrowError(
210 - 'Minified React error #109; visit ' +
211 - 'http://facebook.github.io/react/docs/error-decoder.html?invariant=109&args[]=Component' +
211 + `Minified React error #${errorCode}; visit ` +
212 + `http://facebook.github.io/react/docs/error-decoder.html?invariant=${errorCode}&args[]=Component` +
213 ' for the full message or use the non-minified dev environment' +
214 ' for full errors and additional helpful warnings.',
215 );
src/renderers/dom/fiber/ReactDOMFiberEntry.js
-34
@@ -21,7 +21,6 @@ var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
21 var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');
22 var ReactControlledComponent = require('ReactControlledComponent');
23 var ReactDOMComponentTree = require('ReactDOMComponentTree');
24 -var ReactFeatureFlags = require('ReactFeatureFlags');
24 var ReactDOMFeatureFlags = require('ReactDOMFeatureFlags');
25 var ReactDOMFiberComponent = require('ReactDOMFiberComponent');
26 var ReactDOMFrameScheduling = require('ReactDOMFrameScheduling');
@@ -31,7 +30,6 @@ var ReactInputSelection = require('ReactInputSelection');
30 var ReactInstanceMap = require('ReactInstanceMap');
31 var ReactPortal = require('ReactPortal');
32 var ReactVersion = require('ReactVersion');
34 -var {isValidElement} = require('react');
33 var {injectInternals} = require('ReactFiberDevToolsHook');
34 var {
35 ELEMENT_NODE,
@@ -659,38 +657,6 @@ var ReactDOMFiber = {
657 container: DOMContainer,
658 callback: ?Function,
659 ) {
662 - if (ReactFeatureFlags.disableNewFiberFeatures) {
663 - // Top-level check occurs here instead of inside child reconciler
664 - // because requirements vary between renderers. E.g. React Art
665 - // allows arrays.
666 - if (!isValidElement(element)) {
667 - if (typeof element === 'string') {
668 - invariant(
669 - false,
670 - 'ReactDOM.render(): Invalid component element. Instead of ' +
671 - "passing a string like 'div', pass " +
672 - "React.createElement('div') or <div />.",
673 - );
674 - } else if (typeof element === 'function') {
675 - invariant(
676 - false,
677 - 'ReactDOM.render(): Invalid component element. Instead of ' +
678 - 'passing a class like Foo, pass React.createElement(Foo) ' +
679 - 'or <Foo />.',
680 - );
681 - } else if (element != null && typeof element.props !== 'undefined') {
682 - // Check if it quacks like an element
683 - invariant(
684 - false,
685 - 'ReactDOM.render(): Invalid component element. This may be ' +
686 - 'caused by unintentionally loading two independent copies ' +
687 - 'of React.',
688 - );
689 - } else {
690 - invariant(false, 'ReactDOM.render(): Invalid component element.');
691 - }
692 - }
693 - }
660 return renderSubtreeIntoContainer(
661 null,
662 element,
src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js
-73
@@ -23,17 +23,9 @@ describe('ReactDOMFiber', () => {
23 }
24
25 var container;
26 - var ReactFeatureFlags;
26
27 beforeEach(() => {
28 container = document.createElement('div');
30 - ReactFeatureFlags = require('ReactFeatureFlags');
31 - ReactFeatureFlags.disableNewFiberFeatures = false;
32 - });
33 -
34 - afterEach(() => {
35 - ReactFeatureFlags = require('ReactFeatureFlags');
36 - ReactFeatureFlags.disableNewFiberFeatures = true;
29 });
30
31 it('should render strings as children', () => {
@@ -1103,68 +1095,3 @@ describe('ReactDOMFiber', () => {
1095 });
1096 }
1097 });
1106 -
1107 -// disableNewFiberFeatures currently defaults to true in test
1108 -describe('disableNewFiberFeatures', () => {
1109 - var container;
1110 - var ReactFeatureFlags;
1111 -
1112 - beforeEach(() => {
1113 - container = document.createElement('div');
1114 - ReactFeatureFlags = require('ReactFeatureFlags');
1115 - ReactFeatureFlags.disableNewFiberFeatures = true;
1116 - });
1117 -
1118 - afterEach(() => {
1119 - ReactFeatureFlags = require('ReactFeatureFlags');
1120 - ReactFeatureFlags.disableNewFiberFeatures = false;
1121 - });
1122 -
1123 - it('throws if non-element passed to top-level render', () => {
1124 - const message = 'render(): Invalid component element.';
1125 - expect(() => ReactDOM.render(null, container)).toThrow(message, container);
1126 - expect(() => ReactDOM.render(undefined, container)).toThrow(
1127 - message,
1128 - container,
1129 - );
1130 - expect(() => ReactDOM.render(false, container)).toThrow(message, container);
1131 - expect(() => ReactDOM.render('Hi', container)).toThrow(message, container);
1132 - expect(() => ReactDOM.render(999, container)).toThrow(message, container);
1133 - expect(() => ReactDOM.render([<div key="a" />], container)).toThrow(
1134 - message,
1135 - container,
1136 - );
1137 - });
1138 -
1139 - it('throws if something other than false, null, or an element is returned from render', () => {
1140 - function Render(props) {
1141 - return props.children;
1142 - }
1143 -
1144 - expect(() => ReactDOM.render(<Render>Hi</Render>, container)).toThrow(
1145 - /You may have returned undefined/,
1146 - );
1147 - expect(() => ReactDOM.render(<Render>{999}</Render>, container)).toThrow(
1148 - /You may have returned undefined/,
1149 - );
1150 - expect(() =>
1151 - ReactDOM.render(<Render>[<div key="a" />]</Render>, container),
1152 - ).toThrow(/You may have returned undefined/);
1153 - });
1154 -
1155 - it('treats mocked render functions as if they return null', () => {
1156 - class Mocked extends React.Component {}
1157 - Mocked.prototype.render = jest.fn();
1158 - ReactDOM.render(<Mocked />, container);
1159 - expect(container.textContent).toEqual('');
1160 - });
1161 -
1162 - it('throws if the React package cannot be loaded', () => {
1163 - jest.resetModules();
1164 - jest.mock('react', () => undefined);
1165 - expect(() => require('react-dom')).toThrow(
1166 - 'ReactDOM was loaded before React.',
1167 - );
1168 - jest.resetModules();
1169 - });
1170 -});
src/renderers/dom/shared/__tests__/ReactDOMServerIntegration-test.js
-2
@@ -323,7 +323,6 @@ function resetModules() {
323 // TODO: can we express this test with only public API?
324 ExecutionEnvironment = require('ExecutionEnvironment');
325
326 - require('ReactFeatureFlags').disableNewFiberFeatures = false;
326 PropTypes = require('prop-types');
327 React = require('react');
328 ReactDOM = require('react-dom');
@@ -334,7 +333,6 @@ function resetModules() {
333 // Resetting is important because we want to avoid any shared state
334 // influencing the tests.
335 jest.resetModuleRegistry();
337 - require('ReactFeatureFlags').disableNewFiberFeatures = false;
336 ReactDOMServer = require('react-dom/server');
337 }
338
src/renderers/dom/shared/__tests__/ReactMount-test.js
+15 -23
@@ -68,29 +68,24 @@ describe('ReactMount', () => {
68 });
69 });
70
71 - it('throws when given a string', () => {
72 - expect(function() {
73 - ReactTestUtils.renderIntoDocument('div');
74 - }).toThrowError(
75 - 'ReactDOM.render(): Invalid component element. Instead of passing a ' +
76 - "string like 'div', pass React.createElement('div') or <div />.",
77 - );
78 - });
79 -
80 - it('throws when given a factory', () => {
81 - class Component extends React.Component {
82 - render() {
83 - return <div />;
71 + if (ReactDOMFeatureFlags.useFiber) {
72 + it('warns when given a factory', () => {
73 + spyOn(console, 'error');
74 + class Component extends React.Component {
75 + render() {
76 + return <div />;
77 + }
78 }
85 - }
79
87 - expect(function() {
80 ReactTestUtils.renderIntoDocument(Component);
89 - }).toThrowError(
90 - 'ReactDOM.render(): Invalid component element. Instead of passing a ' +
91 - 'class like Foo, pass React.createElement(Foo) or <Foo />.',
92 - );
93 - });
81 + expectDev(console.error.calls.count()).toBe(1);
82 + expectDev(console.error.calls.argsFor(0)[0]).toContain(
83 + 'Functions are not valid as a React child. ' +
84 + 'This may happen if you return a Component instead of <Component /> from render. ' +
85 + 'Or maybe you meant to call this function rather than return it.',
86 + );
87 + });
88 + }
89
90 it('should render different components in same root', () => {
91 var container = document.createElement('container');
@@ -401,9 +396,6 @@ describe('ReactMount', () => {
396 let mountPoint;
397
398 beforeEach(() => {
404 - const ReactFeatureFlags = require('ReactFeatureFlags');
405 - ReactFeatureFlags.disableNewFiberFeatures = false;
406 -
399 containerDiv = document.createElement('div');
400 containerDiv.innerHTML = 'A<!-- react-mount-point-unstable -->B';
401 mountPoint = containerDiv.childNodes[1];
src/renderers/dom/shared/__tests__/ReactServerRendering-test.js
-4
@@ -19,7 +19,6 @@ var ReactMarkupChecksum;
19 var ReactReconcileTransaction;
20 var ReactTestUtils;
21 var PropTypes;
22 -var ReactFeatureFlags;
22
23 var ReactDOMFeatureFlags = require('ReactDOMFeatureFlags');
24
@@ -36,9 +35,6 @@ describe('ReactDOMServer', () => {
35 ReactReconcileTransaction = require('ReactReconcileTransaction');
36 PropTypes = require('prop-types');
37
39 - ReactFeatureFlags = require('ReactFeatureFlags');
40 - ReactFeatureFlags.disableNewFiberFeatures = false;
41 -
38 ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');
39 ExecutionEnvironment.canUseDOM = false;
40 ReactDOMServer = require('react-dom/server');
src/renderers/shared/fiber/ReactChildFiber.js
+41 -112
@@ -27,7 +27,6 @@ var ReactTypeOfWork = require('ReactTypeOfWork');
27
28 var emptyObject = require('fbjs/lib/emptyObject');
29 var invariant = require('fbjs/lib/invariant');
30 -var ReactFeatureFlags = require('ReactFeatureFlags');
30
31 if (__DEV__) {
32 var {getCurrentFiberStackAddendum} = require('ReactDebugCurrentFiber');
@@ -576,8 +575,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
575 }
576
577 if (__DEV__) {
579 - const disableNewFiberFeatures = ReactFeatureFlags.disableNewFiberFeatures;
580 - if (!disableNewFiberFeatures && typeof newChild === 'function') {
578 + if (typeof newChild === 'function') {
579 warnOnFunctionType();
580 }
581 }
@@ -656,8 +654,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
654 }
655
656 if (__DEV__) {
659 - const disableNewFiberFeatures = ReactFeatureFlags.disableNewFiberFeatures;
660 - if (!disableNewFiberFeatures && typeof newChild === 'function') {
657 + if (typeof newChild === 'function') {
658 warnOnFunctionType();
659 }
660 }
@@ -722,8 +719,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
719 }
720
721 if (__DEV__) {
725 - const disableNewFiberFeatures = ReactFeatureFlags.disableNewFiberFeatures;
726 - if (!disableNewFiberFeatures && typeof newChild === 'function') {
722 + if (typeof newChild === 'function') {
723 warnOnFunctionType();
724 }
725 }
@@ -1301,118 +1297,51 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
1297 // not as a fragment. Nested arrays on the other hand will be treated as
1298 // fragment nodes. Recursion happens at the normal flow.
1299
1304 - const disableNewFiberFeatures = ReactFeatureFlags.disableNewFiberFeatures;
1305 -
1300 // Handle object types
1301 const isObject = typeof newChild === 'object' && newChild !== null;
1302 if (isObject) {
1303 // Support only the subset of return types that Stack supports. Treat
1304 // everything else as empty, but log a warning.
1311 - if (disableNewFiberFeatures) {
1312 - switch (newChild.$$typeof) {
1313 - case REACT_ELEMENT_TYPE:
1314 - return placeSingleChild(
1315 - reconcileSingleElement(
1316 - returnFiber,
1317 - currentFirstChild,
1318 - newChild,
1319 - priority,
1320 - ),
1321 - );
1322 -
1323 - case REACT_PORTAL_TYPE:
1324 - return placeSingleChild(
1325 - reconcileSinglePortal(
1326 - returnFiber,
1327 - currentFirstChild,
1328 - newChild,
1329 - priority,
1330 - ),
1331 - );
1332 - }
1333 - } else {
1334 - switch (newChild.$$typeof) {
1335 - case REACT_ELEMENT_TYPE:
1336 - return placeSingleChild(
1337 - reconcileSingleElement(
1338 - returnFiber,
1339 - currentFirstChild,
1340 - newChild,
1341 - priority,
1342 - ),
1343 - );
1344 -
1345 - case REACT_COROUTINE_TYPE:
1346 - return placeSingleChild(
1347 - reconcileSingleCoroutine(
1348 - returnFiber,
1349 - currentFirstChild,
1350 - newChild,
1351 - priority,
1352 - ),
1353 - );
1354 -
1355 - case REACT_YIELD_TYPE:
1356 - return placeSingleChild(
1357 - reconcileSingleYield(
1358 - returnFiber,
1359 - currentFirstChild,
1360 - newChild,
1361 - priority,
1362 - ),
1363 - );
1305 + switch (newChild.$$typeof) {
1306 + case REACT_ELEMENT_TYPE:
1307 + return placeSingleChild(
1308 + reconcileSingleElement(
1309 + returnFiber,
1310 + currentFirstChild,
1311 + newChild,
1312 + priority,
1313 + ),
1314 + );
1315
1365 - case REACT_PORTAL_TYPE:
1366 - return placeSingleChild(
1367 - reconcileSinglePortal(
1368 - returnFiber,
1369 - currentFirstChild,
1370 - newChild,
1371 - priority,
1372 - ),
1373 - );
1374 - }
1375 - }
1376 - }
1316 + case REACT_COROUTINE_TYPE:
1317 + return placeSingleChild(
1318 + reconcileSingleCoroutine(
1319 + returnFiber,
1320 + currentFirstChild,
1321 + newChild,
1322 + priority,
1323 + ),
1324 + );
1325
1378 - if (disableNewFiberFeatures) {
1379 - // The new child is not an element. If it's not null or false,
1380 - // and the return fiber is a composite component, throw an error.
1381 - switch (returnFiber.tag) {
1382 - case ClassComponent: {
1383 - if (__DEV__) {
1384 - const instance = returnFiber.stateNode;
1385 - if (
1386 - instance.render._isMockFunction &&
1387 - typeof newChild === 'undefined'
1388 - ) {
1389 - // We allow auto-mocks to proceed as if they're
1390 - // returning null.
1391 - break;
1392 - }
1393 - }
1394 - const Component = returnFiber.type;
1395 - invariant(
1396 - newChild === null || newChild === false,
1397 - '%s.render(): A valid React element (or null) must be returned. ' +
1398 - 'You may have returned undefined, an array or some other ' +
1399 - 'invalid object.',
1400 - Component.displayName || Component.name || 'Component',
1326 + case REACT_YIELD_TYPE:
1327 + return placeSingleChild(
1328 + reconcileSingleYield(
1329 + returnFiber,
1330 + currentFirstChild,
1331 + newChild,
1332 + priority,
1333 + ),
1334 );
1402 - break;
1403 - }
1404 - case FunctionalComponent: {
1405 - // Composites accept elements, portals, null, or false
1406 - const Component = returnFiber.type;
1407 - invariant(
1408 - newChild === null || newChild === false,
1409 - '%s(...): A valid React element (or null) must be returned. ' +
1410 - 'You may have returned undefined, an array or some other ' +
1411 - 'invalid object.',
1412 - Component.displayName || Component.name || 'Component',
1335 +
1336 + case REACT_PORTAL_TYPE:
1337 + return placeSingleChild(
1338 + reconcileSinglePortal(
1339 + returnFiber,
1340 + currentFirstChild,
1341 + newChild,
1342 + priority,
1343 + ),
1344 );
1414 - break;
1415 - }
1345 }
1346 }
1347
@@ -1450,11 +1379,11 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
1379 }
1380
1381 if (__DEV__) {
1453 - if (!disableNewFiberFeatures && typeof newChild === 'function') {
1382 + if (typeof newChild === 'function') {
1383 warnOnFunctionType();
1384 }
1385 }
1457 - if (!disableNewFiberFeatures && typeof newChild === 'undefined') {
1386 + if (typeof newChild === 'undefined') {
1387 // If the new child is undefined, and the return fiber is a composite
1388 // component, throw an error. If Fiber return types are disabled,
1389 // we already threw above.
src/renderers/shared/fiber/__tests__/ReactCoroutine-test.js
-3
@@ -14,7 +14,6 @@
14 var React;
15 var ReactNoop;
16 var ReactCoroutine;
17 -var ReactFeatureFlags;
17
18 describe('ReactCoroutine', () => {
19 beforeEach(() => {
@@ -23,8 +22,6 @@ describe('ReactCoroutine', () => {
22 ReactNoop = require('react-noop-renderer');
23 // TODO: can we express this test with only public API?
24 ReactCoroutine = require('ReactCoroutine');
26 - ReactFeatureFlags = require('ReactFeatureFlags');
27 - ReactFeatureFlags.disableNewFiberFeatures = false;
25 });
26
27 function div(...children) {
src/renderers/shared/fiber/__tests__/ReactIncremental-test.js
-4
@@ -13,7 +13,6 @@
13
14 var React;
15 var ReactNoop;
16 -var ReactFeatureFlags;
16 var PropTypes;
17
18 describe('ReactIncremental', () => {
@@ -22,9 +21,6 @@ describe('ReactIncremental', () => {
21 React = require('react');
22 ReactNoop = require('react-noop-renderer');
23 PropTypes = require('prop-types');
25 -
26 - ReactFeatureFlags = require('ReactFeatureFlags');
27 - ReactFeatureFlags.disableNewFiberFeatures = false;
24 });
25
26 it('should render a simple component', () => {
src/renderers/shared/fiber/__tests__/ReactIncrementalErrorHandling-test.js
-3
@@ -14,7 +14,6 @@
14 var PropTypes;
15 var React;
16 var ReactNoop;
17 -var ReactFeatureFlags;
17
18 describe('ReactIncrementalErrorHandling', () => {
19 beforeEach(() => {
@@ -22,8 +21,6 @@ describe('ReactIncrementalErrorHandling', () => {
21 PropTypes = require('prop-types');
22 React = require('react');
23 ReactNoop = require('react-noop-renderer');
25 - ReactFeatureFlags = require('ReactFeatureFlags');
26 - ReactFeatureFlags.disableNewFiberFeatures = false;
24 });
25
26 function div(...children) {
src/renderers/shared/fiber/__tests__/ReactIncrementalPerf-test.js
-3
@@ -14,7 +14,6 @@
14 describe('ReactDebugFiberPerf', () => {
15 let React;
16 let ReactCoroutine;
17 - let ReactFeatureFlags;
17 let ReactNoop;
18 let ReactPortal;
19 let PropTypes;
@@ -121,8 +120,6 @@ describe('ReactDebugFiberPerf', () => {
120 // TODO: can we express this test with only public API?
121 ReactCoroutine = require('ReactCoroutine');
122 ReactPortal = require('ReactPortal');
124 - ReactFeatureFlags = require('ReactFeatureFlags');
125 - ReactFeatureFlags.disableNewFiberFeatures = false;
123 PropTypes = require('prop-types');
124 });
125
src/renderers/shared/fiber/__tests__/ReactIncrementalReflection-test.js
-3
@@ -13,15 +13,12 @@
13
14 var React;
15 var ReactNoop;
16 -var ReactFeatureFlags;
16
17 describe('ReactIncrementalReflection', () => {
18 beforeEach(() => {
19 jest.resetModules();
20 React = require('react');
21 ReactNoop = require('react-noop-renderer');
23 - ReactFeatureFlags = require('ReactFeatureFlags');
24 - ReactFeatureFlags.disableNewFiberFeatures = false;
22 });
23
24 it('handles isMounted even when the initial render is deferred', () => {
src/renderers/shared/fiber/__tests__/ReactIncrementalScheduling-test.js
-3
@@ -13,15 +13,12 @@
13
14 var React;
15 var ReactNoop;
16 -var ReactFeatureFlags;
16
17 describe('ReactIncrementalScheduling', () => {
18 beforeEach(() => {
19 jest.resetModules();
20 React = require('react');
21 ReactNoop = require('react-noop-renderer');
23 - ReactFeatureFlags = require('ReactFeatureFlags');
24 - ReactFeatureFlags.disableNewFiberFeatures = false;
22 });
23
24 function span(prop) {
src/renderers/shared/fiber/__tests__/ReactIncrementalSideEffects-test.js
-3
@@ -13,15 +13,12 @@
13
14 var React;
15 var ReactNoop;
16 -var ReactFeatureFlags;
16
17 describe('ReactIncrementalSideEffects', () => {
18 beforeEach(() => {
19 jest.resetModules();
20 React = require('react');
21 ReactNoop = require('react-noop-renderer');
23 - ReactFeatureFlags = require('ReactFeatureFlags');
24 - ReactFeatureFlags.disableNewFiberFeatures = false;
22 });
23
24 function normalizeCodeLocInfo(str) {
src/renderers/shared/fiber/__tests__/ReactIncrementalTriangle-test.js
-4
@@ -13,16 +13,12 @@
13
14 var React;
15 var ReactNoop;
16 -var ReactFeatureFlags;
16
17 describe('ReactIncrementalTriangle', () => {
18 beforeEach(() => {
19 jest.resetModules();
20 React = require('react');
21 ReactNoop = require('ReactNoopEntry');
23 -
24 - ReactFeatureFlags = require('ReactFeatureFlags');
25 - ReactFeatureFlags.disableNewFiberFeatures = false;
22 });
23
24 function span(prop) {
src/renderers/shared/fiber/__tests__/ReactIncrementalUpdates-test.js
-3
@@ -13,15 +13,12 @@
13
14 var React;
15 var ReactNoop;
16 -var ReactFeatureFlags;
16
17 describe('ReactIncrementalUpdates', () => {
18 beforeEach(() => {
19 jest.resetModuleRegistry();
20 React = require('react');
21 ReactNoop = require('react-noop-renderer');
23 - ReactFeatureFlags = require('ReactFeatureFlags');
24 - ReactFeatureFlags.disableNewFiberFeatures = false;
22 });
23
24 function span(prop) {
src/renderers/shared/fiber/__tests__/ReactTopLevelFragment-test.js
-3
@@ -13,7 +13,6 @@
13
14 var React;
15 var ReactNoop;
16 -var ReactFeatureFlags;
16
17 // This is a new feature in Fiber so I put it in its own test file. It could
18 // probably move to one of the other test files once it is official.
@@ -22,8 +21,6 @@ describe('ReactTopLevelFragment', function() {
21 jest.resetModules();
22 React = require('react');
23 ReactNoop = require('react-noop-renderer');
25 - ReactFeatureFlags = require('ReactFeatureFlags');
26 - ReactFeatureFlags.disableNewFiberFeatures = false;
24 });
25
26 it('should render a simple fragment at the top of a component', function() {
src/renderers/shared/fiber/__tests__/ReactTopLevelText-test.js
-3
@@ -13,7 +13,6 @@
13
14 var React;
15 var ReactNoop;
16 -var ReactFeatureFlags;
16
17 // This is a new feature in Fiber so I put it in its own test file. It could
18 // probably move to one of the other test files once it is official.
@@ -22,8 +21,6 @@ describe('ReactTopLevelText', () => {
21 jest.resetModules();
22 React = require('react');
23 ReactNoop = require('react-noop-renderer');
25 - ReactFeatureFlags = require('ReactFeatureFlags');
26 - ReactFeatureFlags.disableNewFiberFeatures = false;
24 });
25
26 it('should render a component returning strings directly from render', () => {
src/renderers/shared/utils/ReactFeatureFlags.js
-1
@@ -13,7 +13,6 @@
13 'use strict';
14
15 var ReactFeatureFlags = {
16 - disableNewFiberFeatures: false,
16 enableAsyncSubtreeAPI: true,
17 };
18
src/renderers/testing/__tests__/ReactTestRenderer-test.js
-6
@@ -14,7 +14,6 @@
14 var React = require('react');
15 var ReactTestRenderer = require('react-test-renderer');
16 var prettyFormat = require('pretty-format');
17 -var ReactFeatureFlags;
17
18 // Kind of hacky, but we nullify all the instances to test the tree structure
19 // with jasmine's deep equality function, and test the instances separate. We
@@ -40,11 +39,6 @@ function cleanNode(node) {
39 }
40
41 describe('ReactTestRenderer', () => {
43 - beforeEach(() => {
44 - ReactFeatureFlags = require('ReactFeatureFlags');
45 - ReactFeatureFlags.disableNewFiberFeatures = false;
46 - });
47 -
42 function normalizeCodeLocInfo(str) {
43 return str && str.replace(/\(at .+?:\d+\)/g, '(at **)');
44 }