Skip to content

Commit 6588b0a

Browse files
committed
Cover Content::Seq case in VariantRefDeserializer::struct_variant
1 parent 0093f74 commit 6588b0a

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

serde/src/private/de.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2217,6 +2217,8 @@ mod content {
22172217
Some(Content::Map(v)) => {
22182218
de::Deserializer::deserialize_any(MapRefDeserializer::new(v), visitor)
22192219
}
2220+
// Covered by tests/test_enum_untagged.rs
2221+
// newtype_enum::struct_from_seq
22202222
Some(Content::Seq(v)) => {
22212223
de::Deserializer::deserialize_any(SeqRefDeserializer::new(v), visitor)
22222224
}

test_suite/tests/test_enum_untagged.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,25 @@ mod newtype_enum {
214214
],
215215
);
216216
}
217+
218+
// Reaches crate::private::de::content::VariantRefDeserializer::struct_variant
219+
// Content::Seq case
220+
#[test]
221+
fn struct_from_seq() {
222+
assert_de_tokens(
223+
&Outer::Inner(Inner::Struct { f: 1 }),
224+
&[
225+
Token::Map { len: Some(1) },
226+
// tag
227+
Token::Str("Struct"),
228+
// content
229+
Token::Seq { len: Some(1) },
230+
Token::U8(1),
231+
Token::SeqEnd,
232+
Token::MapEnd,
233+
],
234+
);
235+
}
217236
}
218237

219238
// Reaches crate::private::de::content::ContentRefDeserializer::deserialize_option

0 commit comments

Comments
 (0)