Skip to content

Commit 7cfebbc

Browse files
authored
Merge pull request #1974 from Mingun/new-internally-tagged-tests
New internally tagged tests
2 parents 9a84622 + b60c03e commit 7cfebbc

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

serde/src/private/de.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1287,8 +1287,9 @@ mod content {
12871287
// }
12881288
//
12891289
// We want {"topic":"Info"} to deserialize even though
1290-
// ordinarily unit structs do not deserialize from empty map.
1290+
// ordinarily unit structs do not deserialize from empty map/seq.
12911291
Content::Map(ref v) if v.is_empty() => visitor.visit_unit(),
1292+
Content::Seq(ref v) if v.is_empty() => visitor.visit_unit(),
12921293
_ => self.deserialize_any(visitor),
12931294
}
12941295
}

test_suite/tests/test_macros.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -994,6 +994,28 @@ fn test_internally_tagged_struct_variant_containing_unit_variant() {
994994
Token::StructEnd,
995995
],
996996
);
997+
998+
assert_de_tokens(
999+
&Message::Log { level: Level::Info },
1000+
&[
1001+
Token::Map { len: Some(2) },
1002+
Token::Str("action"),
1003+
Token::Str("Log"),
1004+
Token::Str("level"),
1005+
Token::BorrowedStr("Info"),
1006+
Token::MapEnd,
1007+
],
1008+
);
1009+
1010+
assert_de_tokens(
1011+
&Message::Log { level: Level::Info },
1012+
&[
1013+
Token::Seq { len: Some(2) },
1014+
Token::Str("Log"),
1015+
Token::BorrowedStr("Info"),
1016+
Token::SeqEnd,
1017+
],
1018+
);
9971019
}
9981020

9991021
#[test]
@@ -1877,6 +1899,25 @@ fn test_internally_tagged_newtype_variant_containing_unit_struct() {
18771899
Token::MapEnd,
18781900
],
18791901
);
1902+
1903+
assert_de_tokens(
1904+
&Message::Info(Info),
1905+
&[
1906+
Token::Struct { name: "Message", len: 1 },
1907+
Token::Str("topic"),
1908+
Token::Str("Info"),
1909+
Token::StructEnd,
1910+
],
1911+
);
1912+
1913+
assert_de_tokens(
1914+
&Message::Info(Info),
1915+
&[
1916+
Token::Seq { len: Some(1) },
1917+
Token::Str("Info"),
1918+
Token::SeqEnd,
1919+
],
1920+
);
18801921
}
18811922

18821923
#[deny(safe_packed_borrows)]

0 commit comments

Comments
 (0)