Update object.prototype.toString to conform ES11 standard (#4196)
JerryScript-DCO-1.0-Signed-off-by: bence gabor kis kisbg@inf.u-szeged.hu
This commit is contained in:
@@ -167,6 +167,18 @@ ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this arg
|
|||||||
ecma_deref_object (obj_p);
|
ecma_deref_object (obj_p);
|
||||||
return ecma_builtin_helper_object_to_string_tag_helper (tag);
|
return ecma_builtin_helper_object_to_string_tag_helper (tag);
|
||||||
}
|
}
|
||||||
|
else if (builtin_tag != LIT_MAGIC_STRING_ARGUMENTS_UL
|
||||||
|
&& builtin_tag != LIT_MAGIC_STRING_FUNCTION_UL
|
||||||
|
&& builtin_tag != LIT_MAGIC_STRING_ERROR_UL
|
||||||
|
&& builtin_tag != LIT_MAGIC_STRING_BOOLEAN_UL
|
||||||
|
&& builtin_tag != LIT_MAGIC_STRING_NUMBER_UL
|
||||||
|
&& builtin_tag != LIT_MAGIC_STRING_STRING_UL
|
||||||
|
&& builtin_tag != LIT_MAGIC_STRING_DATE_UL
|
||||||
|
&& builtin_tag != LIT_MAGIC_STRING_REGEXP_UL
|
||||||
|
&& builtin_tag != LIT_MAGIC_STRING_ARRAY_UL)
|
||||||
|
{
|
||||||
|
builtin_tag = LIT_MAGIC_STRING_OBJECT_UL;
|
||||||
|
}
|
||||||
|
|
||||||
ecma_free_value (tag);
|
ecma_free_value (tag);
|
||||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||||
|
|||||||
@@ -2670,6 +2670,19 @@ ecma_object_get_class_name (ecma_object_t *obj_p) /**< object */
|
|||||||
{
|
{
|
||||||
return LIT_MAGIC_STRING_FUNCTION_UL;
|
return LIT_MAGIC_STRING_FUNCTION_UL;
|
||||||
}
|
}
|
||||||
|
#if ENABLED (JERRY_ESNEXT)
|
||||||
|
case ECMA_OBJECT_TYPE_PROXY:
|
||||||
|
{
|
||||||
|
ecma_proxy_object_t *proxy_obj_p = (ecma_proxy_object_t *) obj_p;
|
||||||
|
|
||||||
|
if (!ecma_is_value_null (proxy_obj_p->target) && ecma_is_value_object (proxy_obj_p->target))
|
||||||
|
{
|
||||||
|
ecma_object_t *target_obj_p = ecma_get_object_from_value (proxy_obj_p->target);
|
||||||
|
return ecma_object_get_class_name (target_obj_p);
|
||||||
|
}
|
||||||
|
return LIT_MAGIC_STRING_OBJECT_UL;
|
||||||
|
}
|
||||||
|
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
JERRY_ASSERT (type == ECMA_OBJECT_TYPE_GENERAL || type == ECMA_OBJECT_TYPE_PROXY);
|
JERRY_ASSERT (type == ECMA_OBJECT_TYPE_GENERAL || type == ECMA_OBJECT_TYPE_PROXY);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ assert (Symbol.prototype[Symbol.toStringTag] === undefined);
|
|||||||
Symbol.prototype[Symbol.toStringTag] = "myStringTag1";
|
Symbol.prototype[Symbol.toStringTag] = "myStringTag1";
|
||||||
assert (Object.prototype.toString.call (Symbol ()) === "[object myStringTag1]");
|
assert (Object.prototype.toString.call (Symbol ()) === "[object myStringTag1]");
|
||||||
Symbol.prototype[Symbol.toStringTag] = {};
|
Symbol.prototype[Symbol.toStringTag] = {};
|
||||||
assert (Object.prototype.toString.call (Symbol ()) === "[object Symbol]");
|
assert (Object.prototype.toString.call (Symbol ()) === "[object Object]");
|
||||||
|
|
||||||
/* Math @@toStringTag */
|
/* Math @@toStringTag */
|
||||||
assert (Math[Symbol.toStringTag] === "Math");
|
assert (Math[Symbol.toStringTag] === "Math");
|
||||||
@@ -32,7 +32,7 @@ assert (Math[Symbol.toStringTag] === undefined);
|
|||||||
Math[Symbol.toStringTag] = "myStringTag2";
|
Math[Symbol.toStringTag] = "myStringTag2";
|
||||||
assert (Object.prototype.toString.call (Math) === "[object myStringTag2]");
|
assert (Object.prototype.toString.call (Math) === "[object myStringTag2]");
|
||||||
Math[Symbol.toStringTag] = {};
|
Math[Symbol.toStringTag] = {};
|
||||||
assert (Object.prototype.toString.call (Math) === "[object Math]");
|
assert (Object.prototype.toString.call (Math) === "[object Object]");
|
||||||
|
|
||||||
/* ArrayBuffer.prototype @@toStringTag */
|
/* ArrayBuffer.prototype @@toStringTag */
|
||||||
assert (ArrayBuffer.prototype[Symbol.toStringTag] === "ArrayBuffer");
|
assert (ArrayBuffer.prototype[Symbol.toStringTag] === "ArrayBuffer");
|
||||||
@@ -43,7 +43,7 @@ assert (ArrayBuffer.prototype[Symbol.toStringTag] === undefined);
|
|||||||
ArrayBuffer.prototype[Symbol.toStringTag] = "myStringTag3";
|
ArrayBuffer.prototype[Symbol.toStringTag] = "myStringTag3";
|
||||||
assert (Object.prototype.toString.call (new ArrayBuffer ()) === "[object myStringTag3]");
|
assert (Object.prototype.toString.call (new ArrayBuffer ()) === "[object myStringTag3]");
|
||||||
ArrayBuffer.prototype[Symbol.toStringTag] = {};
|
ArrayBuffer.prototype[Symbol.toStringTag] = {};
|
||||||
assert (ArrayBuffer.prototype.toString.call (new ArrayBuffer ()) === "[object ArrayBuffer]");
|
assert (ArrayBuffer.prototype.toString.call (new ArrayBuffer ()) === "[object Object]");
|
||||||
|
|
||||||
/* Promise.prototype @@toStringTag */
|
/* Promise.prototype @@toStringTag */
|
||||||
assert (Promise.prototype[Symbol.toStringTag] === "Promise");
|
assert (Promise.prototype[Symbol.toStringTag] === "Promise");
|
||||||
@@ -54,7 +54,7 @@ assert (Promise.prototype[Symbol.toStringTag] === undefined);
|
|||||||
Promise.prototype[Symbol.toStringTag] = "myStringTag4";
|
Promise.prototype[Symbol.toStringTag] = "myStringTag4";
|
||||||
assert (Object.prototype.toString.call (new Promise (function () {})) === "[object myStringTag4]");
|
assert (Object.prototype.toString.call (new Promise (function () {})) === "[object myStringTag4]");
|
||||||
Promise.prototype[Symbol.toStringTag] = {};
|
Promise.prototype[Symbol.toStringTag] = {};
|
||||||
assert (Promise.prototype.toString.call (new Promise (function () {})) === "[object Promise]");
|
assert (Promise.prototype.toString.call (new Promise (function () {})) === "[object Object]");
|
||||||
|
|
||||||
/* Map.prototype @@toStringTag */
|
/* Map.prototype @@toStringTag */
|
||||||
assert (Map.prototype[Symbol.toStringTag] === "Map");
|
assert (Map.prototype[Symbol.toStringTag] === "Map");
|
||||||
@@ -67,7 +67,7 @@ Map.prototype[Symbol.toStringTag] = "myStringTag5";
|
|||||||
assert (Map.prototype.toString.call (new Map ()) === "[object myStringTag5]");
|
assert (Map.prototype.toString.call (new Map ()) === "[object myStringTag5]");
|
||||||
assert (Object.prototype.toString.call (Map) === "[object Function]");
|
assert (Object.prototype.toString.call (Map) === "[object Function]");
|
||||||
Map.prototype[Symbol.toStringTag] = {};
|
Map.prototype[Symbol.toStringTag] = {};
|
||||||
assert (Map.prototype.toString.call (new Map) === "[object Map]");
|
assert (Map.prototype.toString.call (new Map) === "[object Object]");
|
||||||
|
|
||||||
/* JSON @@toStringTag */
|
/* JSON @@toStringTag */
|
||||||
assert (JSON[Symbol.toStringTag] === "JSON");
|
assert (JSON[Symbol.toStringTag] === "JSON");
|
||||||
@@ -78,7 +78,7 @@ assert (JSON[Symbol.toStringTag] === undefined);
|
|||||||
JSON[Symbol.toStringTag] = "myStringTag6";
|
JSON[Symbol.toStringTag] = "myStringTag6";
|
||||||
assert (Map.prototype.toString.call (JSON) === "[object myStringTag6]");
|
assert (Map.prototype.toString.call (JSON) === "[object myStringTag6]");
|
||||||
JSON[Symbol.toStringTag] = {};
|
JSON[Symbol.toStringTag] = {};
|
||||||
assert (Object.prototype.toString.call (JSON) === "[object JSON]");
|
assert (Object.prototype.toString.call (JSON) === "[object Object]");
|
||||||
|
|
||||||
var typedArrayTypes = ["Int8Array",
|
var typedArrayTypes = ["Int8Array",
|
||||||
"Uint8Array",
|
"Uint8Array",
|
||||||
|
|||||||
@@ -806,9 +806,6 @@
|
|||||||
<test id="built-ins/Object/entries/order-after-define-property.js"><reason></reason></test>
|
<test id="built-ins/Object/entries/order-after-define-property.js"><reason></reason></test>
|
||||||
<test id="built-ins/Object/keys/order-after-define-property.js"><reason></reason></test>
|
<test id="built-ins/Object/keys/order-after-define-property.js"><reason></reason></test>
|
||||||
<test id="built-ins/Object/proto-from-ctor-realm.js"><reason></reason></test>
|
<test id="built-ins/Object/proto-from-ctor-realm.js"><reason></reason></test>
|
||||||
<test id="built-ins/Object/prototype/toString/proxy-function.js"><reason></reason></test>
|
|
||||||
<test id="built-ins/Object/prototype/toString/symbol-tag-non-str-bigint.js"><reason></reason></test>
|
|
||||||
<test id="built-ins/Object/prototype/toString/symbol-tag-non-str-builtin.js"><reason></reason></test>
|
|
||||||
<test id="built-ins/Object/prototype/toString/symbol-tag-non-str-proxy-function.js"><reason></reason></test>
|
<test id="built-ins/Object/prototype/toString/symbol-tag-non-str-proxy-function.js"><reason></reason></test>
|
||||||
<test id="built-ins/Object/subclass-object-arg.js"><reason></reason></test>
|
<test id="built-ins/Object/subclass-object-arg.js"><reason></reason></test>
|
||||||
<test id="built-ins/Promise/all/invoke-resolve-get-error.js"><reason>Test expects incorrect call order</reason></test>
|
<test id="built-ins/Promise/all/invoke-resolve-get-error.js"><reason>Test expects incorrect call order</reason></test>
|
||||||
@@ -8926,5 +8923,4 @@
|
|||||||
<test id="language/expressions/optional-chaining/short-circuiting.js"><reason></reason></test>
|
<test id="language/expressions/optional-chaining/short-circuiting.js"><reason></reason></test>
|
||||||
<test id="language/expressions/optional-chaining/super-property-optional-call.js"><reason></reason></test>
|
<test id="language/expressions/optional-chaining/super-property-optional-call.js"><reason></reason></test>
|
||||||
<!-- END - ES2020: Optional Chaining -->
|
<!-- END - ES2020: Optional Chaining -->
|
||||||
|
|
||||||
</excludeList>
|
</excludeList>
|
||||||
|
|||||||
Reference in New Issue
Block a user