|
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