diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c
index ad809fc25..bc0537faf 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c
+++ b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c
@@ -167,6 +167,18 @@ ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this arg
ecma_deref_object (obj_p);
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);
#endif /* ENABLED (JERRY_ESNEXT) */
diff --git a/jerry-core/ecma/operations/ecma-objects.c b/jerry-core/ecma/operations/ecma-objects.c
index 448efd5b7..6237f3589 100644
--- a/jerry-core/ecma/operations/ecma-objects.c
+++ b/jerry-core/ecma/operations/ecma-objects.c
@@ -2670,6 +2670,19 @@ ecma_object_get_class_name (ecma_object_t *obj_p) /**< object */
{
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:
{
JERRY_ASSERT (type == ECMA_OBJECT_TYPE_GENERAL || type == ECMA_OBJECT_TYPE_PROXY);
diff --git a/tests/jerry/es.next/object-prototype-tostring.js b/tests/jerry/es.next/object-prototype-tostring.js
index 8347de579..b8e58279d 100644
--- a/tests/jerry/es.next/object-prototype-tostring.js
+++ b/tests/jerry/es.next/object-prototype-tostring.js
@@ -21,7 +21,7 @@ assert (Symbol.prototype[Symbol.toStringTag] === undefined);
Symbol.prototype[Symbol.toStringTag] = "myStringTag1";
assert (Object.prototype.toString.call (Symbol ()) === "[object myStringTag1]");
Symbol.prototype[Symbol.toStringTag] = {};
-assert (Object.prototype.toString.call (Symbol ()) === "[object Symbol]");
+assert (Object.prototype.toString.call (Symbol ()) === "[object Object]");
/* Math @@toStringTag */
assert (Math[Symbol.toStringTag] === "Math");
@@ -32,7 +32,7 @@ assert (Math[Symbol.toStringTag] === undefined);
Math[Symbol.toStringTag] = "myStringTag2";
assert (Object.prototype.toString.call (Math) === "[object myStringTag2]");
Math[Symbol.toStringTag] = {};
-assert (Object.prototype.toString.call (Math) === "[object Math]");
+assert (Object.prototype.toString.call (Math) === "[object Object]");
/* ArrayBuffer.prototype @@toStringTag */
assert (ArrayBuffer.prototype[Symbol.toStringTag] === "ArrayBuffer");
@@ -43,7 +43,7 @@ assert (ArrayBuffer.prototype[Symbol.toStringTag] === undefined);
ArrayBuffer.prototype[Symbol.toStringTag] = "myStringTag3";
assert (Object.prototype.toString.call (new ArrayBuffer ()) === "[object myStringTag3]");
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 */
assert (Promise.prototype[Symbol.toStringTag] === "Promise");
@@ -54,7 +54,7 @@ assert (Promise.prototype[Symbol.toStringTag] === undefined);
Promise.prototype[Symbol.toStringTag] = "myStringTag4";
assert (Object.prototype.toString.call (new Promise (function () {})) === "[object myStringTag4]");
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 */
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 (Object.prototype.toString.call (Map) === "[object Function]");
Map.prototype[Symbol.toStringTag] = {};
-assert (Map.prototype.toString.call (new Map) === "[object Map]");
+assert (Map.prototype.toString.call (new Map) === "[object Object]");
/* JSON @@toStringTag */
assert (JSON[Symbol.toStringTag] === "JSON");
@@ -78,7 +78,7 @@ assert (JSON[Symbol.toStringTag] === undefined);
JSON[Symbol.toStringTag] = "myStringTag6";
assert (Map.prototype.toString.call (JSON) === "[object myStringTag6]");
JSON[Symbol.toStringTag] = {};
-assert (Object.prototype.toString.call (JSON) === "[object JSON]");
+assert (Object.prototype.toString.call (JSON) === "[object Object]");
var typedArrayTypes = ["Int8Array",
"Uint8Array",
diff --git a/tests/test262-esnext-excludelist.xml b/tests/test262-esnext-excludelist.xml
index dc5e32e84..458141395 100644
--- a/tests/test262-esnext-excludelist.xml
+++ b/tests/test262-esnext-excludelist.xml
@@ -806,9 +806,6 @@
-
-
-
Test expects incorrect call order
@@ -8926,5 +8923,4 @@
-