refactor(ast_tools): shorten generated code for impl Serialize (#6684)

Follow-on after #6404. Shorten generated code for `impl Serialize`.
This commit is contained in:
overlookmotel 2024-10-19 19:50:12 +00:00
parent 9ba2b0e3a3
commit ad8e293197
5 changed files with 276 additions and 1103 deletions

File diff suppressed because it is too large Load diff

View file

@ -9,10 +9,7 @@ use serde::{ser::SerializeMap, Serialize, Serializer};
use crate::ast::*;
impl<'a> Serialize for Pattern<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "Pattern")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -25,10 +22,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type Pattern = ({\n\ttype: 'Pattern';\n\tbody: Disjunction;\n}) & Span;";
impl<'a> Serialize for Disjunction<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "Disjunction")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -41,10 +35,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type Disjunction = ({\n\ttype: 'Disjunction';\n\tbody: Array<Alternative>;\n}) & Span;";
impl<'a> Serialize for Alternative<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "Alternative")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -57,10 +48,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type Alternative = ({\n\ttype: 'Alternative';\n\tbody: Array<Term>;\n}) & Span;";
impl<'a> Serialize for Term<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Term::BoundaryAssertion(x) => Serialize::serialize(x, serializer),
Term::LookAroundAssertion(x) => Serialize::serialize(x, serializer),
@ -81,10 +69,7 @@ impl<'a> Serialize for Term<'a> {
const TS_APPEND_CONTENT: &'static str = "export type Term = BoundaryAssertion | LookAroundAssertion | Quantifier | Character | Dot | CharacterClassEscape | UnicodePropertyEscape | CharacterClass | CapturingGroup | IgnoreGroup | IndexedReference | NamedReference;";
impl Serialize for BoundaryAssertion {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "BoundaryAssertion")?;
map.serialize_entry("span", &self.span)?;
@ -96,10 +81,7 @@ impl Serialize for BoundaryAssertion {
const TS_APPEND_CONTENT: &'static str = "export type BoundaryAssertion = ({\n\ttype: 'BoundaryAssertion';\n\tspan: Span;\n\tkind: BoundaryAssertionKind;\n});";
impl Serialize for BoundaryAssertionKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
BoundaryAssertionKind::Start => {
serializer.serialize_unit_variant("BoundaryAssertionKind", 0u32, "start")
@ -121,10 +103,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type BoundaryAssertionKind = 'start' | 'end' | 'boundary' | 'negativeBoundary';";
impl<'a> Serialize for LookAroundAssertion<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "LookAroundAssertion")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -137,10 +116,7 @@ impl<'a> Serialize for LookAroundAssertion<'a> {
const TS_APPEND_CONTENT: &'static str = "export type LookAroundAssertion = ({\n\ttype: 'LookAroundAssertion';\n\tkind: LookAroundAssertionKind;\n\tbody: Disjunction;\n}) & Span;";
impl Serialize for LookAroundAssertionKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
LookAroundAssertionKind::Lookahead => {
serializer.serialize_unit_variant("LookAroundAssertionKind", 0u32, "lookahead")
@ -165,10 +141,7 @@ impl Serialize for LookAroundAssertionKind {
const TS_APPEND_CONTENT: &'static str = "export type LookAroundAssertionKind = 'lookahead' | 'negativeLookahead' | 'lookbehind' | 'negativeLookbehind';";
impl<'a> Serialize for Quantifier<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "Quantifier")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -183,10 +156,7 @@ impl<'a> Serialize for Quantifier<'a> {
const TS_APPEND_CONTENT: &'static str = "export type Quantifier = ({\n\ttype: 'Quantifier';\n\tmin: number;\n\tmax: (number) | null;\n\tgreedy: boolean;\n\tbody: Term;\n}) & Span;";
impl Serialize for Character {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "Character")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -199,10 +169,7 @@ impl Serialize for Character {
const TS_APPEND_CONTENT: &'static str = "export type Character = ({\n\ttype: 'Character';\n\tkind: CharacterKind;\n\tvalue: number;\n}) & Span;";
impl Serialize for CharacterKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
CharacterKind::ControlLetter => {
serializer.serialize_unit_variant("CharacterKind", 0u32, "controlLetter")
@ -239,10 +206,7 @@ impl Serialize for CharacterKind {
const TS_APPEND_CONTENT: &'static str = "export type CharacterKind = 'controlLetter' | 'hexadecimalEscape' | 'identifier' | 'null' | 'octal1' | 'octal2' | 'octal3' | 'singleEscape' | 'symbol' | 'unicodeEscape';";
impl Serialize for CharacterClassEscape {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "CharacterClassEscape")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -254,10 +218,7 @@ impl Serialize for CharacterClassEscape {
const TS_APPEND_CONTENT: &'static str = "export type CharacterClassEscape = ({\n\ttype: 'CharacterClassEscape';\n\tkind: CharacterClassEscapeKind;\n}) & Span;";
impl Serialize for CharacterClassEscapeKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
CharacterClassEscapeKind::D => {
serializer.serialize_unit_variant("CharacterClassEscapeKind", 0u32, "d")
@ -284,10 +245,7 @@ impl Serialize for CharacterClassEscapeKind {
const TS_APPEND_CONTENT: &'static str = "export type CharacterClassEscapeKind = 'd' | 'negativeD' | 's' | 'negativeS' | 'w' | 'negativeW';";
impl<'a> Serialize for UnicodePropertyEscape<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "UnicodePropertyEscape")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -302,10 +260,7 @@ impl<'a> Serialize for UnicodePropertyEscape<'a> {
const TS_APPEND_CONTENT: &'static str = "export type UnicodePropertyEscape = ({\n\ttype: 'UnicodePropertyEscape';\n\tnegative: boolean;\n\tstrings: boolean;\n\tname: string;\n\tvalue: (string) | null;\n}) & Span;";
impl Serialize for Dot {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "Dot")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -316,10 +271,7 @@ impl Serialize for Dot {
const TS_APPEND_CONTENT: &'static str = "export type Dot = ({\n\ttype: 'Dot';\n}) & Span;";
impl<'a> Serialize for CharacterClass<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "CharacterClass")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -334,10 +286,7 @@ impl<'a> Serialize for CharacterClass<'a> {
const TS_APPEND_CONTENT: &'static str = "export type CharacterClass = ({\n\ttype: 'CharacterClass';\n\tnegative: boolean;\n\tstrings: boolean;\n\tkind: CharacterClassContentsKind;\n\tbody: Array<CharacterClassContents>;\n}) & Span;";
impl Serialize for CharacterClassContentsKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
CharacterClassContentsKind::Union => {
serializer.serialize_unit_variant("CharacterClassContentsKind", 0u32, "union")
@ -358,10 +307,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type CharacterClassContentsKind = 'union' | 'intersection' | 'subtraction';";
impl<'a> Serialize for CharacterClassContents<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
CharacterClassContents::CharacterClassRange(x) => Serialize::serialize(x, serializer),
CharacterClassContents::CharacterClassEscape(x) => Serialize::serialize(x, serializer),
@ -378,10 +324,7 @@ impl<'a> Serialize for CharacterClassContents<'a> {
const TS_APPEND_CONTENT: &'static str = "export type CharacterClassContents = CharacterClassRange | CharacterClassEscape | UnicodePropertyEscape | Character | CharacterClass | ClassStringDisjunction;";
impl Serialize for CharacterClassRange {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "CharacterClassRange")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -394,10 +337,7 @@ impl Serialize for CharacterClassRange {
const TS_APPEND_CONTENT: &'static str = "export type CharacterClassRange = ({\n\ttype: 'CharacterClassRange';\n\tmin: Character;\n\tmax: Character;\n}) & Span;";
impl<'a> Serialize for ClassStringDisjunction<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "ClassStringDisjunction")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -410,10 +350,7 @@ impl<'a> Serialize for ClassStringDisjunction<'a> {
const TS_APPEND_CONTENT: &'static str = "export type ClassStringDisjunction = ({\n\ttype: 'ClassStringDisjunction';\n\tstrings: boolean;\n\tbody: Array<ClassString>;\n}) & Span;";
impl<'a> Serialize for ClassString<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "ClassString")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -426,10 +363,7 @@ impl<'a> Serialize for ClassString<'a> {
const TS_APPEND_CONTENT: &'static str = "export type ClassString = ({\n\ttype: 'ClassString';\n\tstrings: boolean;\n\tbody: Array<Character>;\n}) & Span;";
impl<'a> Serialize for CapturingGroup<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "CapturingGroup")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -442,10 +376,7 @@ impl<'a> Serialize for CapturingGroup<'a> {
const TS_APPEND_CONTENT: &'static str = "export type CapturingGroup = ({\n\ttype: 'CapturingGroup';\n\tname: (string) | null;\n\tbody: Disjunction;\n}) & Span;";
impl<'a> Serialize for IgnoreGroup<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "IgnoreGroup")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -458,10 +389,7 @@ impl<'a> Serialize for IgnoreGroup<'a> {
const TS_APPEND_CONTENT: &'static str = "export type IgnoreGroup = ({\n\ttype: 'IgnoreGroup';\n\tmodifiers: (Modifiers) | null;\n\tbody: Disjunction;\n}) & Span;";
impl Serialize for Modifiers {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "Modifiers")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -474,10 +402,7 @@ impl Serialize for Modifiers {
const TS_APPEND_CONTENT: &'static str = "export type Modifiers = ({\n\ttype: 'Modifiers';\n\tenabling: (Modifier) | null;\n\tdisabling: (Modifier) | null;\n}) & Span;";
impl Serialize for Modifier {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "Modifier")?;
map.serialize_entry("ignoreCase", &self.ignore_case)?;
@ -490,10 +415,7 @@ impl Serialize for Modifier {
const TS_APPEND_CONTENT: &'static str = "export type Modifier = ({\n\ttype: 'Modifier';\n\tignoreCase: boolean;\n\tmultiline: boolean;\n\tsticky: boolean;\n});";
impl Serialize for IndexedReference {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "IndexedReference")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;
@ -506,10 +428,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type IndexedReference = ({\n\ttype: 'IndexedReference';\n\tindex: number;\n}) & Span;";
impl<'a> Serialize for NamedReference<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("type", "NamedReference")?;
self.span.serialize(serde::__private::ser::FlatMapSerializer(&mut map))?;

View file

@ -12,10 +12,7 @@ use crate::source_type::*;
use crate::span::types::*;
impl Serialize for Span {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("start", &self.start)?;
map.serialize_entry("end", &self.end)?;
@ -27,10 +24,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type Span = ({\n\tstart: number;\n\tend: number;\n});";
impl Serialize for SourceType {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
let mut map = serializer.serialize_map(None)?;
map.serialize_entry("language", &self.language)?;
map.serialize_entry("moduleKind", &self.module_kind)?;
@ -42,10 +36,7 @@ impl Serialize for SourceType {
const TS_APPEND_CONTENT: &'static str = "export type SourceType = ({\n\tlanguage: Language;\n\tmoduleKind: ModuleKind;\n\tvariant: LanguageVariant;\n});";
impl Serialize for Language {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
Language::JavaScript => {
serializer.serialize_unit_variant("Language", 0u32, "javascript")
@ -64,10 +55,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type Language = 'javascript' | 'typescript' | 'typescriptDefinition';";
impl Serialize for ModuleKind {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
ModuleKind::Script => serializer.serialize_unit_variant("ModuleKind", 0u32, "script"),
ModuleKind::Module => serializer.serialize_unit_variant("ModuleKind", 1u32, "module"),
@ -82,10 +70,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type ModuleKind = 'script' | 'module' | 'unambiguous';";
impl Serialize for LanguageVariant {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
LanguageVariant::Standard => {
serializer.serialize_unit_variant("LanguageVariant", 0u32, "standard")

View file

@ -9,10 +9,7 @@ use serde::{ser::SerializeMap, Serialize, Serializer};
use crate::operator::*;
impl Serialize for AssignmentOperator {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
AssignmentOperator::Assign => {
serializer.serialize_unit_variant("AssignmentOperator", 0u32, "=")
@ -69,10 +66,7 @@ impl Serialize for AssignmentOperator {
const TS_APPEND_CONTENT: &'static str = "export type AssignmentOperator = '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '<<=' | '>>=' | '>>>=' | '|=' | '^=' | '&=' | '&&=' | '||=' | '??=' | '**=';";
impl Serialize for BinaryOperator {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
BinaryOperator::Equality => {
serializer.serialize_unit_variant("BinaryOperator", 0u32, "==")
@ -145,10 +139,7 @@ impl Serialize for BinaryOperator {
const TS_APPEND_CONTENT: &'static str = "export type BinaryOperator = '==' | '!=' | '===' | '!==' | '<' | '<=' | '>' | '>=' | '<<' | '>>' | '>>>' | '+' | '-' | '*' | '/' | '%' | '|' | '^' | '&' | 'in' | 'instanceof' | '**';";
impl Serialize for LogicalOperator {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
LogicalOperator::Or => serializer.serialize_unit_variant("LogicalOperator", 0u32, "||"),
LogicalOperator::And => {
@ -164,10 +155,7 @@ impl Serialize for LogicalOperator {
const TS_APPEND_CONTENT: &'static str = "export type LogicalOperator = '||' | '&&' | '??';";
impl Serialize for UnaryOperator {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
UnaryOperator::UnaryNegation => {
serializer.serialize_unit_variant("UnaryOperator", 0u32, "-")
@ -196,10 +184,7 @@ const TS_APPEND_CONTENT: &'static str =
"export type UnaryOperator = '-' | '+' | '!' | '~' | 'typeof' | 'void' | 'delete';";
impl Serialize for UpdateOperator {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match *self {
UpdateOperator::Increment => {
serializer.serialize_unit_variant("UpdateOperator", 0u32, "++")

View file

@ -51,9 +51,7 @@ impl Derive for DeriveESTree {
let lifetime = if def.has_lifetime() { quote!(<'a>) } else { TokenStream::new() };
quote! {
impl #lifetime Serialize for #ident #lifetime {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,
{
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
#body
}
}