Skip to content

Commit b60c03e

Browse files
committed
Extend test_internally_tagged_newtype_variant_containing_unit_struct to cover structs and seqs
1 parent 3257851 commit b60c03e

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-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: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1899,6 +1899,25 @@ fn test_internally_tagged_newtype_variant_containing_unit_struct() {
18991899
Token::MapEnd,
19001900
],
19011901
);
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+
);
19021921
}
19031922

19041923
#[deny(safe_packed_borrows)]

0 commit comments

Comments
 (0)