From a5a942999fc42dd5a717ac862ea3eab31a06eb8f Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Thu, 8 Feb 2024 11:04:09 -0500 Subject: [PATCH] Delete more redundant JSX code (#28276) Found another redundant implementation of JSX code. Not being used anywhere so safe to delete. --- packages/react/src/ReactElementValidator.js | 148 -------------------- 1 file changed, 148 deletions(-) diff --git a/packages/react/src/ReactElementValidator.js b/packages/react/src/ReactElementValidator.js index 7162a1e22a0c5..275be8efe2d66 100644 --- a/packages/react/src/ReactElementValidator.js +++ b/packages/react/src/ReactElementValidator.js @@ -26,10 +26,8 @@ import isArray from 'shared/isArray'; import ReactCurrentOwner from './ReactCurrentOwner'; import {isValidElement, createElement, cloneElement} from './ReactElementProd'; -import {jsxDEV} from './jsx/ReactJSXElement'; import {setExtraStackFrame} from './ReactDebugCurrentFrame'; import {describeUnknownElementTypeFrameInDEV} from 'shared/ReactComponentStackFrame'; -import hasOwnProperty from 'shared/hasOwnProperty'; const REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference'); @@ -277,152 +275,6 @@ function validateFragmentProps(fragment) { } } -const didWarnAboutKeySpread = {}; - -export function jsxWithValidation( - type, - props, - key, - isStaticChildren, - source, - self, -) { - if (__DEV__) { - const validType = isValidElementType(type); - - // We warn in this case but don't throw. We expect the element creation to - // succeed and there will likely be errors in render. - if (!validType) { - let info = ''; - if ( - type === undefined || - (typeof type === 'object' && - type !== null && - Object.keys(type).length === 0) - ) { - info += - ' You likely forgot to export your component from the file ' + - "it's defined in, or you might have mixed up default and named imports."; - } - - const sourceInfo = getSourceInfoErrorAddendum(source); - if (sourceInfo) { - info += sourceInfo; - } else { - info += getDeclarationErrorAddendum(); - } - - let typeString; - if (type === null) { - typeString = 'null'; - } else if (isArray(type)) { - typeString = 'array'; - } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) { - typeString = `<${getComponentNameFromType(type.type) || 'Unknown'} />`; - info = - ' Did you accidentally export a JSX literal instead of a component?'; - } else { - typeString = typeof type; - } - - if (__DEV__) { - console.error( - 'React.jsx: type is invalid -- expected a string (for ' + - 'built-in components) or a class/function (for composite ' + - 'components) but got: %s.%s', - typeString, - info, - ); - } - } - - const element = jsxDEV(type, props, key, source, self); - - // The result can be nullish if a mock or a custom function is used. - // TODO: Drop this when these are no longer allowed as the type argument. - if (element == null) { - return element; - } - - // Skip key warning if the type isn't valid since our key validation logic - // doesn't expect a non-string/function type and can throw confusing errors. - // We don't want exception behavior to differ between dev and prod. - // (Rendering will throw with a helpful message and as soon as the type is - // fixed, the key warnings will appear.) - - if (validType) { - const children = props.children; - if (children !== undefined) { - if (isStaticChildren) { - if (isArray(children)) { - for (let i = 0; i < children.length; i++) { - validateChildKeys(children[i], type); - } - - if (Object.freeze) { - Object.freeze(children); - } - } else { - console.error( - 'React.jsx: Static children should always be an array. ' + - 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + - 'Use the Babel transform instead.', - ); - } - } else { - validateChildKeys(children, type); - } - } - } - - if (hasOwnProperty.call(props, 'key')) { - const componentName = getComponentNameFromType(type); - const keys = Object.keys(props).filter(k => k !== 'key'); - const beforeExample = - keys.length > 0 - ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' - : '{key: someKey}'; - if (!didWarnAboutKeySpread[componentName + beforeExample]) { - const afterExample = - keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}'; - console.error( - 'A props object containing a "key" prop is being spread into JSX:\n' + - ' let props = %s;\n' + - ' <%s {...props} />\n' + - 'React keys must be passed directly to JSX without using spread:\n' + - ' let props = %s;\n' + - ' <%s key={someKey} {...props} />', - beforeExample, - componentName, - afterExample, - componentName, - ); - didWarnAboutKeySpread[componentName + beforeExample] = true; - } - } - - if (type === REACT_FRAGMENT_TYPE) { - validateFragmentProps(element); - } else { - validatePropTypes(element); - } - - return element; - } -} - -// These two functions exist to still get child warnings in dev -// even with the prod transform. This means that jsxDEV is purely -// opt-in behavior for better messages but that we won't stop -// giving you warnings if you use production apis. -export function jsxWithValidationStatic(type, props, key) { - return jsxWithValidation(type, props, key, true); -} - -export function jsxWithValidationDynamic(type, props, key) { - return jsxWithValidation(type, props, key, false); -} - export function createElementWithValidation(type, props, children) { const validType = isValidElementType(type);