deserialize_internally_tagged_variant always called with the same deserializer, so remove that parameter

This commit is contained in:
Mingun
2025-09-19 20:26:14 +05:00
parent ddb7c4b30f
commit ca79f61d0f
+5 -9
View File
@@ -1425,10 +1425,7 @@ fn deserialize_internally_tagged_enum(
let variant_name = field_i(i); let variant_name = field_i(i);
let block = Match(deserialize_internally_tagged_variant( let block = Match(deserialize_internally_tagged_variant(
params, params, variant, cattrs,
variant,
cattrs,
quote!(__deserializer),
)); ));
quote! { quote! {
@@ -1864,12 +1861,11 @@ fn deserialize_internally_tagged_variant(
params: &Parameters, params: &Parameters,
variant: &Variant, variant: &Variant,
cattrs: &attr::Container, cattrs: &attr::Container,
deserializer: TokenStream,
) -> Fragment { ) -> Fragment {
if let Some(path) = variant.attrs.deserialize_with() { if let Some(path) = variant.attrs.deserialize_with() {
let unwrap_fn = unwrap_to_variant_closure(params, variant, false); let unwrap_fn = unwrap_to_variant_closure(params, variant, false);
return quote_block! { return quote_block! {
_serde::#private::Result::map(#path(#deserializer), #unwrap_fn) _serde::#private::Result::map(#path(__deserializer), #unwrap_fn)
}; };
} }
@@ -1885,7 +1881,7 @@ fn deserialize_internally_tagged_variant(
quote!((#default)) quote!((#default))
}); });
quote_block! { quote_block! {
_serde::Deserializer::deserialize_any(#deserializer, _serde::#private::de::InternallyTaggedUnitVisitor::new(#type_name, #variant_name))?; _serde::Deserializer::deserialize_any(__deserializer, _serde::#private::de::InternallyTaggedUnitVisitor::new(#type_name, #variant_name))?;
_serde::#private::Ok(#this_value::#variant_ident #default) _serde::#private::Ok(#this_value::#variant_ident #default)
} }
} }
@@ -1893,13 +1889,13 @@ fn deserialize_internally_tagged_variant(
variant_ident, variant_ident,
params, params,
&variant.fields[0], &variant.fields[0],
&deserializer, &quote!(__deserializer),
), ),
Style::Struct => deserialize_struct( Style::Struct => deserialize_struct(
params, params,
&variant.fields, &variant.fields,
cattrs, cattrs,
StructForm::InternallyTagged(variant_ident, deserializer), StructForm::InternallyTagged(variant_ident, quote!(__deserializer)),
), ),
Style::Tuple => unreachable!("checked in serde_derive_internals"), Style::Tuple => unreachable!("checked in serde_derive_internals"),
} }