Skip to content

Commit b60e409

Browse files
committed
Hygiene for macro-generated newtype struct deserialization with 'with' attr
1 parent fdc36e5 commit b60e409

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

serde_derive/src/de.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -875,13 +875,14 @@ fn deserialize_newtype_struct(
875875
) -> TokenStream {
876876
let delife = params.borrowed.de_lifetime();
877877
let field_ty = field.ty;
878+
let deserializer_var = quote!(__e);
878879

879880
let value = match field.attrs.deserialize_with() {
880881
None => {
881882
let span = field.original.span();
882883
let func = quote_spanned!(span=> <#field_ty as _serde::Deserialize>::deserialize);
883884
quote! {
884-
#func(__e)?
885+
#func(#deserializer_var)?
885886
}
886887
}
887888
Some(path) => {
@@ -890,7 +891,7 @@ fn deserialize_newtype_struct(
890891
// on the #[serde(with = "...")]
891892
// ^^^^^
892893
quote_spanned! {path.span()=>
893-
#path(__e)?
894+
#path(#deserializer_var)?
894895
}
895896
}
896897
};
@@ -906,7 +907,7 @@ fn deserialize_newtype_struct(
906907

907908
quote! {
908909
#[inline]
909-
fn visit_newtype_struct<__E>(self, __e: __E) -> _serde::__private::Result<Self::Value, __E::Error>
910+
fn visit_newtype_struct<__E>(self, #deserializer_var: __E) -> _serde::__private::Result<Self::Value, __E::Error>
910911
where
911912
__E: _serde::Deserializer<#delife>,
912913
{

0 commit comments

Comments
 (0)