mirror of
https://github.com/danbulant/oxc
synced 2026-05-22 21:58:36 +00:00
refactor(transformer): reorder match arms in JSX transform (#5860)
Pure refactor. Switch order of code. Spread attributes are more unusual than standard attributes, so put the common case first.
This commit is contained in:
parent
58a83274fd
commit
d2eaa7dd41
1 changed files with 14 additions and 14 deletions
|
|
@ -463,20 +463,6 @@ impl<'a> ReactJsx<'a> {
|
||||||
let attributes = &e.opening_element.attributes;
|
let attributes = &e.opening_element.attributes;
|
||||||
for attribute in attributes {
|
for attribute in attributes {
|
||||||
match attribute {
|
match attribute {
|
||||||
// optimize `{...prop}` to `prop` in static mode
|
|
||||||
JSXAttributeItem::SpreadAttribute(spread) => {
|
|
||||||
if is_classic && attributes.len() == 1 {
|
|
||||||
// deopt if spreading an object with `__proto__` key
|
|
||||||
if !matches!(&spread.argument, Expression::ObjectExpression(o) if o.has_proto())
|
|
||||||
{
|
|
||||||
arguments.push(Argument::from({
|
|
||||||
// SAFETY: `ast.copy` is unsound! We need to fix.
|
|
||||||
unsafe { self.ast().copy(&spread.argument) }
|
|
||||||
}));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
JSXAttributeItem::Attribute(attr) => {
|
JSXAttributeItem::Attribute(attr) => {
|
||||||
if attr.is_identifier("__self") {
|
if attr.is_identifier("__self") {
|
||||||
self_attr_span = Some(attr.name.span());
|
self_attr_span = Some(attr.name.span());
|
||||||
|
|
@ -496,6 +482,20 @@ impl<'a> ReactJsx<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// optimize `{...prop}` to `prop` in static mode
|
||||||
|
JSXAttributeItem::SpreadAttribute(spread) => {
|
||||||
|
if is_classic && attributes.len() == 1 {
|
||||||
|
// deopt if spreading an object with `__proto__` key
|
||||||
|
if !matches!(&spread.argument, Expression::ObjectExpression(o) if o.has_proto())
|
||||||
|
{
|
||||||
|
arguments.push(Argument::from({
|
||||||
|
// SAFETY: `ast.copy` is unsound! We need to fix.
|
||||||
|
unsafe { self.ast().copy(&spread.argument) }
|
||||||
|
}));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add attribute to prop object
|
// Add attribute to prop object
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue