From f957eacbaef18a70d4987e8c22ec18cfd27f1571 Mon Sep 17 00:00:00 2001 From: n14little Date: Thu, 2 Jul 2020 16:43:40 -0500 Subject: [PATCH] fix json.stringify symbol handling (#535) --- boa/src/builtins/json/tests.rs | 3 --- boa/src/builtins/value/mod.rs | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/boa/src/builtins/json/tests.rs b/boa/src/builtins/json/tests.rs index 130f7a41a2..87033013e6 100644 --- a/boa/src/builtins/json/tests.rs +++ b/boa/src/builtins/json/tests.rs @@ -54,8 +54,6 @@ fn json_stringify_remove_function_values_from_objects() { } #[test] -#[ignore] -// there is a bug for setting a symbol as a field's value fn json_stringify_remove_symbols_from_objects() { let realm = Realm::create(); let mut engine = Interpreter::new(realm); @@ -152,7 +150,6 @@ fn json_stringify_array_converts_function_to_null() { } #[test] -#[ignore] fn json_stringify_array_converts_symbol_to_null() { let realm = Realm::create(); let mut engine = Interpreter::new(realm); diff --git a/boa/src/builtins/value/mod.rs b/boa/src/builtins/value/mod.rs index bec4a45621..b317af06c7 100644 --- a/boa/src/builtins/value/mod.rs +++ b/boa/src/builtins/value/mod.rs @@ -260,7 +260,7 @@ impl Value { for k in obj.borrow().properties().keys() { if k != "length" { let value = self.get_field(k.to_string()); - if value.is_undefined() || value.is_function() { + if value.is_undefined() || value.is_function() || value.is_symbol() { arr.push(JSONValue::Null); } else { arr.push(self.get_field(k.to_string()).to_json(interpreter)?); @@ -273,7 +273,7 @@ impl Value { for k in obj.borrow().properties().keys() { let key = k.clone(); let value = self.get_field(k.to_string()); - if !value.is_undefined() && !value.is_function() { + if !value.is_undefined() && !value.is_function() && !value.is_symbol() { new_obj.insert(key.to_string(), value.to_json(interpreter)?); } }