[ES6] JSON.stringify should ignore object properties that have symbol values and...
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 Aug 2015 05:53:37 +0000 (05:53 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 Aug 2015 05:53:37 +0000 (05:53 +0000)
commit89b70d9b73ad9f2c96e656d91a9e3362ad3df037
treeb579793c81c3339230be349b139d1fb3ee32b722
parent0fdd4d1f2f610626c040961dbb10efeb0abb793b
[ES6] JSON.stringify should ignore object properties that have symbol values and convert the symbol values in array to null
https://bugs.webkit.org/show_bug.cgi?id=148628

Reviewed by Saam Barati.

As per ECMA262 6.0,

1. JSON.stringify should ignore object properties that have symbol values.

    SerializeJSONProperty[1] will return undefined if the value of the property is a symbol.
    In this case, SerializeJSONObject[2] does not append any string for this property.

2. JSON.stringify should convert the symbol values in array to null

    As the same to the object case, SerializeJSONProperty will return undefined if the value of the property is a symbol.
    But in the case of arrays, if the result of SerializeJSONProperty is undefined, it will emit "null"[3].
    This behavior is already implemented in the existing JSON.stringify. Added tests to ensure that.

[1]: http://www.ecma-international.org/ecma-262/6.0/#sec-serializejsonproperty
[2]: http://www.ecma-international.org/ecma-262/6.0/#sec-serializejsonobject
[3]: http://www.ecma-international.org/ecma-262/6.0/#sec-serializejsonarray

* runtime/JSONObject.cpp:
(JSC::unwrapBoxedPrimitive):
(JSC::Stringifier::appendStringifiedValue):
(JSC::Stringifier::Holder::appendNextProperty):
* tests/stress/symbol-with-json.js:
(shouldBe):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@189162 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/JSONObject.cpp
Source/JavaScriptCore/tests/stress/symbol-with-json.js