File tree 2 files changed +31
-3
lines changed
test_suite/tests/regression
2 files changed +31
-3
lines changed Original file line number Diff line number Diff line change @@ -875,13 +875,14 @@ fn deserialize_newtype_struct(
875
875
) -> TokenStream {
876
876
let delife = params. borrowed . de_lifetime ( ) ;
877
877
let field_ty = field. ty ;
878
+ let deserializer_var = quote ! ( __e) ;
878
879
879
880
let value = match field. attrs . deserialize_with ( ) {
880
881
None => {
881
882
let span = field. original . span ( ) ;
882
883
let func = quote_spanned ! ( span=> <#field_ty as _serde:: Deserialize >:: deserialize) ;
883
884
quote ! {
884
- #func( __e ) ?
885
+ #func( #deserializer_var ) ?
885
886
}
886
887
}
887
888
Some ( path) => {
@@ -890,7 +891,7 @@ fn deserialize_newtype_struct(
890
891
// on the #[serde(with = "...")]
891
892
// ^^^^^
892
893
quote_spanned ! { path. span( ) =>
893
- #path( __e ) ?
894
+ #path( #deserializer_var ) ?
894
895
}
895
896
}
896
897
} ;
@@ -906,7 +907,7 @@ fn deserialize_newtype_struct(
906
907
907
908
quote ! {
908
909
#[ 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 >
910
911
where
911
912
__E: _serde:: Deserializer <#delife>,
912
913
{
Original file line number Diff line number Diff line change
1
+ #![ allow( clippy:: trivially_copy_pass_by_ref) ]
2
+
3
+ use serde_derive:: Deserialize ;
4
+
5
+ macro_rules! declare_in_macro {
6
+ ( $with: literal) => {
7
+ #[ derive( Deserialize ) ]
8
+ pub struct S (
9
+ #[ serde( with = $with) ]
10
+ #[ allow( dead_code) ]
11
+ i32 ,
12
+ ) ;
13
+ } ;
14
+ }
15
+
16
+ declare_in_macro ! ( "with" ) ;
17
+
18
+ mod with {
19
+ use serde:: Deserializer ;
20
+
21
+ pub fn deserialize < ' de , D > ( _: D ) -> Result < i32 , D :: Error >
22
+ where
23
+ D : Deserializer < ' de > ,
24
+ {
25
+ unimplemented ! ( )
26
+ }
27
+ }
You can’t perform that action at this time.
0 commit comments