mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-28 02:17:55 +00:00
Hygiene fixes
This commit is contained in:
+22
-13
@@ -32,9 +32,10 @@ pub fn expand_derive_deserialize(input: &syn::DeriveInput) -> Result<Tokens, Str
|
||||
|
||||
let impl_block = if let Some(remote) = cont.attrs.remote() {
|
||||
let vis = &input.vis;
|
||||
let fun = quote_spanned!(Span::call_site()=> deserialize);
|
||||
quote! {
|
||||
impl #de_impl_generics #ident #ty_generics #where_clause {
|
||||
#vis fn deserialize<__D>(__deserializer: __D) -> _serde::export::Result<#remote #ty_generics, __D::Error>
|
||||
#vis fn #fun<__D>(__deserializer: __D) -> _serde::export::Result<#remote #ty_generics, __D::Error>
|
||||
where __D: _serde::Deserializer<#delife>
|
||||
{
|
||||
#body
|
||||
@@ -562,14 +563,16 @@ fn deserialize_seq(
|
||||
}
|
||||
});
|
||||
|
||||
// FIXME: parentheses around field values are because of
|
||||
// https://github.com/rust-lang/rust/issues/47311
|
||||
let mut result = if is_struct {
|
||||
let names = fields.iter().map(|f| &f.ident);
|
||||
quote! {
|
||||
#type_path { #( #names: #vars ),* }
|
||||
quote_spanned! {Span::call_site()=>
|
||||
#type_path { #( #names: (#vars) ),* }
|
||||
}
|
||||
} else {
|
||||
quote! {
|
||||
#type_path ( #(#vars),* )
|
||||
quote_spanned! {Span::call_site()=>
|
||||
#type_path ( #((#vars)),* )
|
||||
}
|
||||
};
|
||||
|
||||
@@ -629,10 +632,11 @@ fn deserialize_seq_in_place(
|
||||
span: Span::call_site(),
|
||||
}));
|
||||
|
||||
let dot = quote_spanned!(Span::call_site()=> .);
|
||||
if field.attrs.skip_deserializing() {
|
||||
let default = Expr(expr_is_missing(field, cattrs));
|
||||
quote! {
|
||||
self.place.#field_name = #default;
|
||||
self.place #dot #field_name = #default;
|
||||
}
|
||||
} else {
|
||||
let return_invalid_length = quote! {
|
||||
@@ -642,7 +646,7 @@ fn deserialize_seq_in_place(
|
||||
None => {
|
||||
quote! {
|
||||
if let _serde::export::None = try!(_serde::de::SeqAccess::next_element_seed(&mut __seq,
|
||||
_serde::private::de::InPlaceSeed(&mut self.place.#field_name)))
|
||||
_serde::private::de::InPlaceSeed(&mut self.place #dot #field_name)))
|
||||
{
|
||||
#return_invalid_length
|
||||
}
|
||||
@@ -655,7 +659,7 @@ fn deserialize_seq_in_place(
|
||||
#wrapper
|
||||
match try!(_serde::de::SeqAccess::next_element::<#wrapper_ty>(&mut __seq)) {
|
||||
_serde::export::Some(__wrap) => {
|
||||
self.place.#field_name = __wrap.value;
|
||||
self.place #dot #field_name = __wrap.value;
|
||||
}
|
||||
_serde::export::None => {
|
||||
#return_invalid_length
|
||||
@@ -711,7 +715,9 @@ fn deserialize_newtype_struct(type_path: &Tokens, params: &Parameters, field: &F
|
||||
}
|
||||
};
|
||||
|
||||
let mut result = quote!(#type_path(#value));
|
||||
// FIXME: parentheses around field values are because of
|
||||
// https://github.com/rust-lang/rust/issues/47311
|
||||
let mut result = quote_spanned!(Span::call_site()=> #type_path((#value)));
|
||||
if params.has_getter {
|
||||
let this = ¶ms.this;
|
||||
result = quote! {
|
||||
@@ -736,12 +742,13 @@ fn deserialize_newtype_struct_in_place(params: &Parameters, field: &Field) -> To
|
||||
|
||||
let delife = params.borrowed.de_lifetime();
|
||||
|
||||
let elem = quote_spanned!(Span::call_site()=> .0);
|
||||
quote! {
|
||||
#[inline]
|
||||
fn visit_newtype_struct<__E>(self, __e: __E) -> _serde::export::Result<Self::Value, __E::Error>
|
||||
where __E: _serde::Deserializer<#delife>
|
||||
{
|
||||
_serde::Deserialize::deserialize_in_place(__e, &mut self.place.0)
|
||||
_serde::Deserialize::deserialize_in_place(__e, &mut self.place #elem)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2042,13 +2049,15 @@ fn deserialize_map(
|
||||
}
|
||||
});
|
||||
|
||||
// FIXME: parentheses around field values are because of
|
||||
// https://github.com/rust-lang/rust/issues/47311
|
||||
let result = fields_names.iter().map(|&(field, ref name)| {
|
||||
let ident = field.ident.expect("struct contains unnamed fields");
|
||||
if field.attrs.skip_deserializing() {
|
||||
let value = Expr(expr_is_missing(field, cattrs));
|
||||
quote!(#ident: #value)
|
||||
quote_spanned!(Span::call_site()=> #ident: (#value))
|
||||
} else {
|
||||
quote!(#ident: #name)
|
||||
quote_spanned!(Span::call_site()=> #ident: (#name))
|
||||
}
|
||||
});
|
||||
|
||||
@@ -2066,7 +2075,7 @@ fn deserialize_map(
|
||||
}
|
||||
};
|
||||
|
||||
let mut result = quote!(#struct_path { #(#result),* });
|
||||
let mut result = quote_spanned!(Span::call_site()=> #struct_path { #(#result),* });
|
||||
if params.has_getter {
|
||||
let this = ¶ms.this;
|
||||
result = quote! {
|
||||
|
||||
Reference in New Issue
Block a user