Ensure all JSX spread properties get visited in ES2018+ (#55859)

This commit is contained in:
Mateusz Burzyński
2023-10-27 20:36:21 +02:00
committed by GitHub
parent 85c2577285
commit a25321afce
10 changed files with 228 additions and 2 deletions

View File

@@ -36,6 +36,7 @@ import {
isJsxSelfClosingElement,
isJsxSpreadAttribute,
isLineBreak,
isObjectLiteralElementLike,
isObjectLiteralExpression,
isPropertyAssignment,
isSourceFile,
@@ -63,6 +64,7 @@ import {
ObjectLiteralElementLike,
ObjectLiteralExpression,
PropertyAssignment,
sameMap,
ScriptTarget,
setIdentifierGeneratedImportReference,
setParentRecursive,
@@ -444,7 +446,7 @@ export function transformJsx(context: TransformationContext): (x: SourceFile | B
function transformJsxSpreadAttributeToProps(node: JsxSpreadAttribute) {
if (isObjectLiteralExpression(node.expression) && !hasProto(node.expression)) {
return node.expression.properties;
return sameMap(node.expression.properties, p => Debug.checkDefined(visitNode(p, visitor, isObjectLiteralElementLike)));
}
return factory.createSpreadAssignment(Debug.checkDefined(visitNode(node.expression, visitor, isExpression)));
}