mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
refactor(ast_tools): shorten generated code by avoiding ref in matches (#6675)
Follow-on after #6404. Shorten generated code for deriving `ESTree` by avoiding `ref` in matches.
This commit is contained in:
parent
2eb984ab05
commit
11458a5bfd
3 changed files with 656 additions and 758 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -64,19 +64,19 @@ impl<'a> Serialize for Term<'a> {
|
||||||
where
|
where
|
||||||
S: Serializer,
|
S: Serializer,
|
||||||
{
|
{
|
||||||
match *self {
|
match self {
|
||||||
Term::BoundaryAssertion(ref x) => Serialize::serialize(x, serializer),
|
Term::BoundaryAssertion(x) => Serialize::serialize(x, serializer),
|
||||||
Term::LookAroundAssertion(ref x) => Serialize::serialize(x, serializer),
|
Term::LookAroundAssertion(x) => Serialize::serialize(x, serializer),
|
||||||
Term::Quantifier(ref x) => Serialize::serialize(x, serializer),
|
Term::Quantifier(x) => Serialize::serialize(x, serializer),
|
||||||
Term::Character(ref x) => Serialize::serialize(x, serializer),
|
Term::Character(x) => Serialize::serialize(x, serializer),
|
||||||
Term::Dot(ref x) => Serialize::serialize(x, serializer),
|
Term::Dot(x) => Serialize::serialize(x, serializer),
|
||||||
Term::CharacterClassEscape(ref x) => Serialize::serialize(x, serializer),
|
Term::CharacterClassEscape(x) => Serialize::serialize(x, serializer),
|
||||||
Term::UnicodePropertyEscape(ref x) => Serialize::serialize(x, serializer),
|
Term::UnicodePropertyEscape(x) => Serialize::serialize(x, serializer),
|
||||||
Term::CharacterClass(ref x) => Serialize::serialize(x, serializer),
|
Term::CharacterClass(x) => Serialize::serialize(x, serializer),
|
||||||
Term::CapturingGroup(ref x) => Serialize::serialize(x, serializer),
|
Term::CapturingGroup(x) => Serialize::serialize(x, serializer),
|
||||||
Term::IgnoreGroup(ref x) => Serialize::serialize(x, serializer),
|
Term::IgnoreGroup(x) => Serialize::serialize(x, serializer),
|
||||||
Term::IndexedReference(ref x) => Serialize::serialize(x, serializer),
|
Term::IndexedReference(x) => Serialize::serialize(x, serializer),
|
||||||
Term::NamedReference(ref x) => Serialize::serialize(x, serializer),
|
Term::NamedReference(x) => Serialize::serialize(x, serializer),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -379,21 +379,13 @@ impl<'a> Serialize for CharacterClassContents<'a> {
|
||||||
where
|
where
|
||||||
S: Serializer,
|
S: Serializer,
|
||||||
{
|
{
|
||||||
match *self {
|
match self {
|
||||||
CharacterClassContents::CharacterClassRange(ref x) => {
|
CharacterClassContents::CharacterClassRange(x) => Serialize::serialize(x, serializer),
|
||||||
Serialize::serialize(x, serializer)
|
CharacterClassContents::CharacterClassEscape(x) => Serialize::serialize(x, serializer),
|
||||||
}
|
CharacterClassContents::UnicodePropertyEscape(x) => Serialize::serialize(x, serializer),
|
||||||
CharacterClassContents::CharacterClassEscape(ref x) => {
|
CharacterClassContents::Character(x) => Serialize::serialize(x, serializer),
|
||||||
Serialize::serialize(x, serializer)
|
CharacterClassContents::NestedCharacterClass(x) => Serialize::serialize(x, serializer),
|
||||||
}
|
CharacterClassContents::ClassStringDisjunction(x) => {
|
||||||
CharacterClassContents::UnicodePropertyEscape(ref x) => {
|
|
||||||
Serialize::serialize(x, serializer)
|
|
||||||
}
|
|
||||||
CharacterClassContents::Character(ref x) => Serialize::serialize(x, serializer),
|
|
||||||
CharacterClassContents::NestedCharacterClass(ref x) => {
|
|
||||||
Serialize::serialize(x, serializer)
|
|
||||||
}
|
|
||||||
CharacterClassContents::ClassStringDisjunction(ref x) => {
|
|
||||||
Serialize::serialize(x, serializer)
|
Serialize::serialize(x, serializer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -141,13 +141,13 @@ fn serialize_enum(def: &EnumDef) -> TokenStream {
|
||||||
let var_ident = var.ident();
|
let var_ident = var.ident();
|
||||||
assert!(var.fields.len() == 1, "Each variant of an untagged enum must have exactly one inner field (on {ident}::{var_ident})");
|
assert!(var.fields.len() == 1, "Each variant of an untagged enum must have exactly one inner field (on {ident}::{var_ident})");
|
||||||
quote! {
|
quote! {
|
||||||
#ident::#var_ident(ref x) => {
|
#ident::#var_ident(x) => {
|
||||||
Serialize::serialize(x, serializer)
|
Serialize::serialize(x, serializer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
quote! {
|
quote! {
|
||||||
match *self {
|
match self {
|
||||||
#(#match_branches),*
|
#(#match_branches),*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue