Skip to content

Commit

Permalink
Merge pull request #1269 from serde-rs/with
Browse files Browse the repository at this point in the history
Fix generated code for deserializing untagged newtype variant
  • Loading branch information
dtolnay committed May 20, 2018
2 parents f09320b + 16d1265 commit aa2bbb4
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
6 changes: 2 additions & 4 deletions serde_derive/src/de.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
}
Expand Down
10 changes: 10 additions & 0 deletions test_suite/tests/test_gen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
),
}
}

//////////////////////////////////////////////////////////////////////////
Expand Down

0 comments on commit aa2bbb4

Please sign in to comment.