mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-22 14:57:59 +00:00
Fixed #1468, flattened struct fields made structs ignore their tag
This commit is contained in:
@@ -1424,6 +1424,48 @@ fn test_internally_tagged_braced_struct_with_zero_fields() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_internally_tagged_struct_with_flattened_field() {
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(tag="tag_struct")]
|
||||
pub struct Struct {
|
||||
#[serde(flatten)]
|
||||
pub flat: Enum
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(tag="tag_enum", content="content")]
|
||||
pub enum Enum {
|
||||
A(u64),
|
||||
}
|
||||
|
||||
assert_tokens(
|
||||
&Struct{flat: Enum::A(0)},
|
||||
&[
|
||||
Token::Map { len: None },
|
||||
Token::Str("tag_struct"),
|
||||
Token::Str("Struct"),
|
||||
Token::Str("tag_enum"),
|
||||
Token::Str("A"),
|
||||
Token::Str("content"),
|
||||
Token::U64(0),
|
||||
Token::MapEnd
|
||||
]
|
||||
);
|
||||
|
||||
assert_de_tokens(
|
||||
&Struct{flat: Enum::A(0)},
|
||||
&[
|
||||
Token::Map { len: None },
|
||||
Token::Str("tag_enum"),
|
||||
Token::Str("A"),
|
||||
Token::Str("content"),
|
||||
Token::U64(0),
|
||||
Token::MapEnd
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_enum_in_untagged_enum() {
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
|
||||
Reference in New Issue
Block a user