From afb1754528795995e71051a5978a1e434e132be8 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 23 Jun 2019 12:05:02 -0700 Subject: [PATCH] Allow integer key in untagged flattened map --- serde/src/private/de.rs | 2 ++ test_suite/tests/test_macros.rs | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/serde/src/private/de.rs b/serde/src/private/de.rs index feb3d4c7b..ffa5012dc 100644 --- a/serde/src/private/de.rs +++ b/serde/src/private/de.rs @@ -1420,6 +1420,7 @@ mod content { Content::ByteBuf(v) => visitor.visit_byte_buf(v), Content::Bytes(v) => visitor.visit_borrowed_bytes(v), Content::U8(v) => visitor.visit_u8(v), + Content::U64(v) => visitor.visit_u64(v), _ => Err(self.invalid_type(&visitor)), } } @@ -2123,6 +2124,7 @@ mod content { Content::ByteBuf(ref v) => visitor.visit_bytes(v), Content::Bytes(v) => visitor.visit_borrowed_bytes(v), Content::U8(v) => visitor.visit_u8(v), + Content::U64(v) => visitor.visit_u64(v), _ => Err(self.invalid_type(&visitor)), } } diff --git a/test_suite/tests/test_macros.rs b/test_suite/tests/test_macros.rs index e474953ad..c4eb06f36 100644 --- a/test_suite/tests/test_macros.rs +++ b/test_suite/tests/test_macros.rs @@ -1466,6 +1466,34 @@ fn test_internally_tagged_struct_with_flattened_field() { ); } +#[test] +fn test_untagged_enum_with_flattened_integer_key() { + #[derive(Debug, PartialEq, Serialize, Deserialize)] + #[serde(untagged)] + pub enum Untagged { + Variant { + #[serde(flatten)] + map: BTreeMap, + }, + } + + assert_tokens( + &Untagged::Variant { + map: { + let mut map = BTreeMap::new(); + map.insert(100, "BTreeMap".to_owned()); + map + }, + }, + &[ + Token::Map { len: None }, + Token::U64(100), + Token::Str("BTreeMap"), + Token::MapEnd, + ], + ); +} + #[test] fn test_enum_in_untagged_enum() { #[derive(Debug, PartialEq, Serialize, Deserialize)]