|
8 | 8 |
|
9 | 9 | use syn::{self, Ident, Index, Member}; |
10 | 10 | use syn::punctuated::Punctuated; |
| 11 | +use syn::spanned::Spanned; |
11 | 12 | use quote::{ToTokens, Tokens}; |
12 | 13 | use proc_macro2::{Literal, Span, Term}; |
13 | 14 |
|
@@ -538,7 +539,9 @@ fn deserialize_seq( |
538 | 539 | let visit = match field.attrs.deserialize_with() { |
539 | 540 | None => { |
540 | 541 | let field_ty = &field.ty; |
541 | | - quote!(try!(_serde::de::SeqAccess::next_element::<#field_ty>(&mut __seq))) |
| 542 | + let span = Span::def_site().located_at(field.original.span()); |
| 543 | + let func = quote_spanned!(span=> _serde::de::SeqAccess::next_element::<#field_ty>); |
| 544 | + quote!(try!(#func(&mut __seq))) |
542 | 545 | } |
543 | 546 | Some(path) => { |
544 | 547 | let (wrapper, wrapper_ty) = wrap_deserialize_field_with(params, field.ty, path); |
@@ -1984,8 +1987,10 @@ fn deserialize_map( |
1984 | 1987 | let visit = match field.attrs.deserialize_with() { |
1985 | 1988 | None => { |
1986 | 1989 | let field_ty = &field.ty; |
| 1990 | + let span = Span::def_site().located_at(field.original.span()); |
| 1991 | + let func = quote_spanned!(span=> _serde::de::MapAccess::next_value::<#field_ty>); |
1987 | 1992 | quote! { |
1988 | | - try!(_serde::de::MapAccess::next_value::<#field_ty>(&mut __map)) |
| 1993 | + try!(#func(&mut __map)) |
1989 | 1994 | } |
1990 | 1995 | } |
1991 | 1996 | Some(path) => { |
@@ -2382,8 +2387,10 @@ fn expr_is_missing(field: &Field, cattrs: &attr::Container) -> Fragment { |
2382 | 2387 | let name = field.attrs.name().deserialize_name(); |
2383 | 2388 | match field.attrs.deserialize_with() { |
2384 | 2389 | None => { |
| 2390 | + let span = Span::def_site().located_at(field.original.span()); |
| 2391 | + let func = quote_spanned!(span=> _serde::private::de::missing_field); |
2385 | 2392 | quote_expr! { |
2386 | | - try!(_serde::private::de::missing_field(#name)) |
| 2393 | + try!(#func(#name)) |
2387 | 2394 | } |
2388 | 2395 | } |
2389 | 2396 | Some(_) => { |
|
0 commit comments