Delete duplicate jsx() implementation (#28258)
Not sure how this happened but there are two identical implementations of the jsx and jsxDEV functions. One of them was unreachable. I deleted that one.
Andrew Clark committed
Feb 6, 2024 at 15:05 UTC
66924457594bc28eb2f3f39c7c61d54b931c188e
2 files changed
+2
-160
packages/react/src/ReactElementProd.js
-154
@@ -201,160 +201,6 @@ function ReactElement(type, key, ref, self, source, owner, props) {
201
return element;
202
}
203
204
-/**
205
- * https://github.com/reactjs/rfcs/pull/107
206
- * @param {*} type
207
- * @param {object} props
208
- * @param {string} key
209
- */
210
-export function jsx(type, config, maybeKey) {
211
- let propName;
212
-
213
- // Reserved names are extracted
214
- const props = {};
215
-
216
- let key = null;
217
- let ref = null;
218
-
219
- // Currently, key can be spread in as a prop. This causes a potential
220
- // issue if key is also explicitly declared (ie. <div {...props} key="Hi" />
221
- // or <div key="Hi" {...props} /> ). We want to deprecate key spread,
222
- // but as an intermediary step, we will use jsxDEV for everything except
223
- // <div {...props} key="Hi" />, because we aren't currently able to tell if
224
- // key is explicitly declared to be undefined or not.
225
- if (maybeKey !== undefined) {
226
- if (__DEV__) {
227
- checkKeyStringCoercion(maybeKey);
228
- }
229
- key = '' + maybeKey;
230
- }
231
-
232
- if (hasValidKey(config)) {
233
- if (__DEV__) {
234
- checkKeyStringCoercion(config.key);
235
- }
236
- key = '' + config.key;
237
- }
238
-
239
- if (hasValidRef(config)) {
240
- ref = config.ref;
241
- }
242
-
243
- // Remaining properties are added to a new props object
244
- for (propName in config) {
245
- if (
246
- hasOwnProperty.call(config, propName) &&
247
- !RESERVED_PROPS.hasOwnProperty(propName)
248
- ) {
249
- props[propName] = config[propName];
250
- }
251
- }
252
-
253
- // Resolve default props
254
- if (type && type.defaultProps) {
255
- const defaultProps = type.defaultProps;
256
- for (propName in defaultProps) {
257
- if (props[propName] === undefined) {
258
- props[propName] = defaultProps[propName];
259
- }
260
- }
261
- }
262
-
263
- return ReactElement(
264
- type,
265
- key,
266
- ref,
267
- undefined,
268
- undefined,
269
- ReactCurrentOwner.current,
270
- props,
271
- );
272
-}
273
-
274
-/**
275
- * https://github.com/reactjs/rfcs/pull/107
276
- * @param {*} type
277
- * @param {object} props
278
- * @param {string} key
279
- */
280
-export function jsxDEV(type, config, maybeKey, source, self) {
281
- let propName;
282
-
283
- // Reserved names are extracted
284
- const props = {};
285
-
286
- let key = null;
287
- let ref = null;
288
-
289
- // Currently, key can be spread in as a prop. This causes a potential
290
- // issue if key is also explicitly declared (ie. <div {...props} key="Hi" />
291
- // or <div key="Hi" {...props} /> ). We want to deprecate key spread,
292
- // but as an intermediary step, we will use jsxDEV for everything except
293
- // <div {...props} key="Hi" />, because we aren't currently able to tell if
294
- // key is explicitly declared to be undefined or not.
295
- if (maybeKey !== undefined) {
296
- if (__DEV__) {
297
- checkKeyStringCoercion(maybeKey);
298
- }
299
- key = '' + maybeKey;
300
- }
301
-
302
- if (hasValidKey(config)) {
303
- if (__DEV__) {
304
- checkKeyStringCoercion(config.key);
305
- }
306
- key = '' + config.key;
307
- }
308
-
309
- if (hasValidRef(config)) {
310
- ref = config.ref;
311
- warnIfStringRefCannotBeAutoConverted(config);
312
- }
313
-
314
- // Remaining properties are added to a new props object
315
- for (propName in config) {
316
- if (
317
- hasOwnProperty.call(config, propName) &&
318
- !RESERVED_PROPS.hasOwnProperty(propName)
319
- ) {
320
- props[propName] = config[propName];
321
- }
322
- }
323
-
324
- // Resolve default props
325
- if (type && type.defaultProps) {
326
- const defaultProps = type.defaultProps;
327
- for (propName in defaultProps) {
328
- if (props[propName] === undefined) {
329
- props[propName] = defaultProps[propName];
330
- }
331
- }
332
- }
333
-
334
- if (key || ref) {
335
- const displayName =
336
- typeof type === 'function'
337
- ? type.displayName || type.name || 'Unknown'
338
- : type;
339
- if (key) {
340
- defineKeyPropWarningGetter(props, displayName);
341
- }
342
- if (ref) {
343
- defineRefPropWarningGetter(props, displayName);
344
- }
345
- }
346
-
347
- return ReactElement(
348
- type,
349
- key,
350
- ref,
351
- self,
352
- source,
353
- ReactCurrentOwner.current,
354
- props,
355
- );
356
-}
357
-
204
/**
205
* Create and return a new ReactElement of the given type.
206
* See https://reactjs.org/docs/react-api.html#createelement
packages/react/src/ReactElementValidator.js
+2
-6
@@ -25,12 +25,8 @@ import checkPropTypes from 'shared/checkPropTypes';
25
import isArray from 'shared/isArray';
26
27
import ReactCurrentOwner from './ReactCurrentOwner';
28
-import {
29
- isValidElement,
30
- createElement,
31
- cloneElement,
32
- jsxDEV,
33
-} from './ReactElementProd';
28
+import {isValidElement, createElement, cloneElement} from './ReactElementProd';
29
+import {jsxDEV} from './jsx/ReactJSXElement';
30
import {setExtraStackFrame} from './ReactDebugCurrentFrame';
31
import {describeUnknownElementTypeFrameInDEV} from 'shared/ReactComponentStackFrame';
32
import hasOwnProperty from 'shared/hasOwnProperty';