Skip to content

Commit 00c4b0c

Browse files
committed
Merge pull request 2560 from Mingun/honest-test
2 parents 89139e2 + 6a097ec commit 00c4b0c

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

serde/src/private/de.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,8 @@ mod content {
313313
}
314314
}
315315

316+
/// Used to capture data in [`Content`] from other deserializers.
317+
/// Cannot capture externally tagged enums, `i128` and `u128`.
316318
struct ContentVisitor<'de> {
317319
value: PhantomData<Content<'de>>,
318320
}
@@ -528,6 +530,8 @@ mod content {
528530
Content(Content<'de>),
529531
}
530532

533+
/// Serves as a seed for deserializing a key of internally tagged enum.
534+
/// Cannot capture externally tagged enums, `i128` and `u128`.
531535
struct TagOrContentVisitor<'de> {
532536
name: &'static str,
533537
value: PhantomData<TagOrContent<'de>>,
@@ -814,6 +818,9 @@ mod content {
814818

815819
/// Used by generated code to deserialize an internally tagged enum.
816820
///
821+
/// Captures map or sequence from the original deserializer and searches
822+
/// a tag in it (in case of sequence, tag is the first element of sequence).
823+
///
817824
/// Not public API.
818825
pub struct TaggedContentVisitor<T> {
819826
tag_name: &'static str,

test_suite/tests/test_macros.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,6 +1081,15 @@ fn test_internally_tagged_struct_variant_containing_unit_variant() {
10811081
Log { level: Level },
10821082
}
10831083

1084+
assert_de_tokens(
1085+
&Level::Info,
1086+
&[
1087+
Token::Enum { name: "Level" },
1088+
Token::BorrowedStr("Info"),
1089+
Token::Unit,
1090+
],
1091+
);
1092+
10841093
assert_de_tokens(
10851094
&Message::Log { level: Level::Info },
10861095
&[
@@ -1091,7 +1100,9 @@ fn test_internally_tagged_struct_variant_containing_unit_variant() {
10911100
Token::Str("action"),
10921101
Token::Str("Log"),
10931102
Token::Str("level"),
1103+
Token::Enum { name: "Level" },
10941104
Token::BorrowedStr("Info"),
1105+
Token::Unit,
10951106
Token::StructEnd,
10961107
],
10971108
);
@@ -1103,7 +1114,9 @@ fn test_internally_tagged_struct_variant_containing_unit_variant() {
11031114
Token::Str("action"),
11041115
Token::Str("Log"),
11051116
Token::Str("level"),
1117+
Token::Enum { name: "Level" },
11061118
Token::BorrowedStr("Info"),
1119+
Token::Unit,
11071120
Token::MapEnd,
11081121
],
11091122
);
@@ -1113,7 +1126,9 @@ fn test_internally_tagged_struct_variant_containing_unit_variant() {
11131126
&[
11141127
Token::Seq { len: Some(2) },
11151128
Token::Str("Log"),
1129+
Token::Enum { name: "Level" },
11161130
Token::BorrowedStr("Info"),
1131+
Token::Unit,
11171132
Token::SeqEnd,
11181133
],
11191134
);

0 commit comments

Comments
 (0)