mirror of
https://github.com/danbulant/oxc
synced 2026-05-25 04:42:10 +00:00
perf(ast): box PropertyKey enum
This commit is contained in:
parent
cf278a2760
commit
c640b4fb08
4 changed files with 11 additions and 9 deletions
|
|
@ -258,8 +258,8 @@ pub struct Property<'a> {
|
|||
#[derive(Debug, Serialize, PartialEq, Hash)]
|
||||
#[serde(untagged)]
|
||||
pub enum PropertyKey<'a> {
|
||||
Identifier(IdentifierName),
|
||||
PrivateIdentifier(PrivateIdentifier),
|
||||
Identifier(Box<'a, IdentifierName>),
|
||||
PrivateIdentifier(Box<'a, PrivateIdentifier>),
|
||||
Expression(Expression<'a>),
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -309,7 +309,7 @@ impl<'a> Parser<'a> {
|
|||
match self.cur_kind() {
|
||||
Kind::PrivateIdentifier => {
|
||||
let private_ident = self.parse_private_identifier();
|
||||
Ok((PropertyKey::PrivateIdentifier(private_ident), false))
|
||||
Ok((PropertyKey::PrivateIdentifier(self.ast.alloc(private_ident)), false))
|
||||
}
|
||||
_ => self.parse_property_name(),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ impl<'a> CoverGrammar<'a, Property<'a>> for AssignmentTargetProperty<'a> {
|
|||
if property.shorthand {
|
||||
let binding = match property.key {
|
||||
PropertyKey::Identifier(ident) => {
|
||||
IdentifierReference { node: ident.node, name: ident.name }
|
||||
IdentifierReference { node: ident.node, name: ident.unbox().name }
|
||||
}
|
||||
_ => return p.unexpected(),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -120,10 +120,9 @@ impl<'a> Parser<'a> {
|
|||
Ok(self.ast.property(
|
||||
self.end_node(node),
|
||||
PropertyKind::Init,
|
||||
PropertyKey::Identifier(IdentifierName {
|
||||
node: identifier.node,
|
||||
name: identifier.name,
|
||||
}),
|
||||
PropertyKey::Identifier(
|
||||
self.ast.alloc(IdentifierName { node: identifier.node, name: identifier.name }),
|
||||
),
|
||||
PropertyValue::Expression(value),
|
||||
/* method */ false,
|
||||
/* shorthand */ true,
|
||||
|
|
@ -167,7 +166,10 @@ impl<'a> Parser<'a> {
|
|||
computed = true;
|
||||
self.parse_computed_property_name().map(PropertyKey::Expression)?
|
||||
}
|
||||
_ => PropertyKey::Identifier(self.parse_identifier_name()?),
|
||||
_ => {
|
||||
let ident = self.parse_identifier_name()?;
|
||||
PropertyKey::Identifier(self.ast.alloc(ident))
|
||||
}
|
||||
};
|
||||
Ok((key, computed))
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue