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:
overlookmotel 2024-10-19 19:50:10 +00:00
parent 2eb984ab05
commit 11458a5bfd
3 changed files with 656 additions and 758 deletions

File diff suppressed because it is too large Load diff

View file

@ -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)
} }
} }

View file

@ -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),*
} }
} }