From e719a02bb0a4cc39e11a945dcff83422440e50d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20=C5=81abor?= Date: Fri, 2 Sep 2022 16:49:44 +0200 Subject: [PATCH] feat(serde_v8): Support StringObject as unit enum variant (#15715) --- serde_v8/de.rs | 6 +++--- serde_v8/tests/de.rs | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/serde_v8/de.rs b/serde_v8/de.rs index c09796d4b2..7b99fdcaf7 100644 --- a/serde_v8/de.rs +++ b/serde_v8/de.rs @@ -201,8 +201,8 @@ impl<'de, 'a, 'b, 's, 'x> de::Deserializer<'de> where V: Visitor<'de>, { - if self.input.is_string() { - let v8_string = v8::Local::::try_from(self.input).unwrap(); + if self.input.is_string() || self.input.is_string_object() { + let v8_string = self.input.to_string(self.scope).unwrap(); let string = to_utf8(v8_string, self.scope); visitor.visit_string(string) } else { @@ -396,7 +396,7 @@ impl<'de, 'a, 'b, 's, 'x> de::Deserializer<'de> V: Visitor<'de>, { // Unit variant - if self.input.is_string() { + if self.input.is_string() || self.input.is_string_object() { let payload = v8::undefined(self.scope).into(); visitor.visit_enum(EnumAccess { scope: self.scope, diff --git a/serde_v8/tests/de.rs b/serde_v8/tests/de.rs index 1d4dae51ae..5ae1040363 100644 --- a/serde_v8/tests/de.rs +++ b/serde_v8/tests/de.rs @@ -125,8 +125,11 @@ detest!( // Unit enums detest!(de_enum_unit_a, EnumUnit, "'A'", EnumUnit::A); +detest!(de_enum_unit_so_a, EnumUnit, "new String('A')", EnumUnit::A); detest!(de_enum_unit_b, EnumUnit, "'B'", EnumUnit::B); +detest!(de_enum_unit_so_b, EnumUnit, "new String('B')", EnumUnit::B); detest!(de_enum_unit_c, EnumUnit, "'C'", EnumUnit::C); +detest!(de_enum_unit_so_c, EnumUnit, "new String('C')", EnumUnit::C); // Enums with payloads (tuples & struct) detest!(