Fix generated code for deserializing untagged newtype variant

This commit is contained in:
David Tolnay 2018-05-19 17:14:20 -07:00
parent f09320b293
commit 16d1265e17
No known key found for this signature in database
GPG Key ID: F9BA143B95FF6D82
2 changed files with 12 additions and 4 deletions

View File

@ -1802,10 +1802,8 @@ fn deserialize_untagged_newtype_variant(
}
Some(path) => {
quote_block! {
let __value: #field_ty = _serde::export::Result::map(
#path(#deserializer),
#this::#variant_ident);
__value
let __value: _serde::export::Result<#field_ty, _> = #path(#deserializer);
_serde::export::Result::map(__value, #this::#variant_ident)
}
}
}

View File

@ -643,6 +643,16 @@ fn test_gen() {
struct ImpliciltyBorrowedOption<'a> {
option: std::option::Option<&'a str>,
}
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
enum UntaggedNewtypeVariantWith {
Newtype(
#[serde(serialize_with = "ser_x")]
#[serde(deserialize_with = "de_x")]
X,
),
}
}
//////////////////////////////////////////////////////////////////////////