mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 15:24:46 -05:00
feat(serde_v8): Support StringObject as unit enum variant (#15715)
This commit is contained in:
parent
8178665bd1
commit
e719a02bb0
2 changed files with 6 additions and 3 deletions
|
@ -201,8 +201,8 @@ impl<'de, 'a, 'b, 's, 'x> de::Deserializer<'de>
|
||||||
where
|
where
|
||||||
V: Visitor<'de>,
|
V: Visitor<'de>,
|
||||||
{
|
{
|
||||||
if self.input.is_string() {
|
if self.input.is_string() || self.input.is_string_object() {
|
||||||
let v8_string = v8::Local::<v8::String>::try_from(self.input).unwrap();
|
let v8_string = self.input.to_string(self.scope).unwrap();
|
||||||
let string = to_utf8(v8_string, self.scope);
|
let string = to_utf8(v8_string, self.scope);
|
||||||
visitor.visit_string(string)
|
visitor.visit_string(string)
|
||||||
} else {
|
} else {
|
||||||
|
@ -396,7 +396,7 @@ impl<'de, 'a, 'b, 's, 'x> de::Deserializer<'de>
|
||||||
V: Visitor<'de>,
|
V: Visitor<'de>,
|
||||||
{
|
{
|
||||||
// Unit variant
|
// Unit variant
|
||||||
if self.input.is_string() {
|
if self.input.is_string() || self.input.is_string_object() {
|
||||||
let payload = v8::undefined(self.scope).into();
|
let payload = v8::undefined(self.scope).into();
|
||||||
visitor.visit_enum(EnumAccess {
|
visitor.visit_enum(EnumAccess {
|
||||||
scope: self.scope,
|
scope: self.scope,
|
||||||
|
|
|
@ -125,8 +125,11 @@ detest!(
|
||||||
|
|
||||||
// Unit enums
|
// Unit enums
|
||||||
detest!(de_enum_unit_a, EnumUnit, "'A'", EnumUnit::A);
|
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_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_c, EnumUnit, "'C'", EnumUnit::C);
|
||||||
|
detest!(de_enum_unit_so_c, EnumUnit, "new String('C')", EnumUnit::C);
|
||||||
|
|
||||||
// Enums with payloads (tuples & struct)
|
// Enums with payloads (tuples & struct)
|
||||||
detest!(
|
detest!(
|
||||||
|
|
Loading…
Reference in a new issue