diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-reflect.c b/jerry-core/ecma/builtin-objects/ecma-builtin-reflect.c
index 19475cde3..0349d5f46 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-reflect.c
+++ b/jerry-core/ecma/builtin-objects/ecma-builtin-reflect.c
@@ -261,20 +261,32 @@ ecma_builtin_reflect_dispatch_routine (uint16_t builtin_routine_id, /**< built-i
return ECMA_VALUE_ERROR;
}
- ecma_value_t result = ecma_builtin_object_object_define_property (obj_p, name_str_p, arguments_list[2]);
+ ecma_property_descriptor_t prop_desc;
+ ecma_value_t conv_result = ecma_op_to_property_descriptor (arguments_list[2], &prop_desc);
+
+ if (ECMA_IS_VALUE_ERROR (conv_result))
+ {
+ ecma_deref_ecma_string (name_str_p);
+ return conv_result;
+ }
+
+ prop_desc.flags |= ECMA_PROP_IS_THROW;
+
+ ecma_value_t result = ecma_op_object_define_own_property (obj_p,
+ name_str_p,
+ &prop_desc);
+
ecma_deref_ecma_string (name_str_p);
- bool is_error = ECMA_IS_VALUE_ERROR (result);
+ ecma_free_property_descriptor (&prop_desc);
- if (is_error)
+ if (ECMA_IS_VALUE_ERROR (result))
{
- jcontext_release_exception ();
- }
- else
- {
- ecma_free_value (result);
+ return result;
}
- return ecma_make_boolean_value (!is_error);
+ bool boolean_result = ecma_op_to_boolean (result);
+
+ return ecma_make_boolean_value (boolean_result);
}
case ECMA_REFLECT_OBJECT_GET_OWN_PROPERTY_DESCRIPTOR:
{
diff --git a/jerry-core/ecma/operations/ecma-conversion.c b/jerry-core/ecma/operations/ecma-conversion.c
index c6a8141c8..e28542676 100644
--- a/jerry-core/ecma/operations/ecma-conversion.c
+++ b/jerry-core/ecma/operations/ecma-conversion.c
@@ -594,38 +594,42 @@ ecma_op_from_property_descriptor (const ecma_property_descriptor_t *src_prop_des
}
else
{
- /* 4. */
+#if !ENABLED (JERRY_ES2015)
JERRY_ASSERT (src_prop_desc_p->flags & (ECMA_PROP_IS_GET_DEFINED | ECMA_PROP_IS_SET_DEFINED));
-
- /* a. */
- if (src_prop_desc_p->get_p == NULL)
+#else /* ENABLED (JERRY_ES2015) */
+ if (src_prop_desc_p->flags & (ECMA_PROP_IS_GET_DEFINED | ECMA_PROP_IS_SET_DEFINED))
+#endif /* ENABLED (JERRY_ES2015) */
{
- prop_desc.value = ECMA_VALUE_UNDEFINED;
- }
- else
- {
- prop_desc.value = ecma_make_object_value (src_prop_desc_p->get_p);
- }
+ /* a. */
+ if (src_prop_desc_p->get_p == NULL)
+ {
+ prop_desc.value = ECMA_VALUE_UNDEFINED;
+ }
+ else
+ {
+ prop_desc.value = ecma_make_object_value (src_prop_desc_p->get_p);
+ }
- completion = ecma_op_object_define_own_property (obj_p,
- ecma_get_magic_string (LIT_MAGIC_STRING_GET),
- &prop_desc);
- JERRY_ASSERT (ecma_is_value_true (completion));
+ completion = ecma_op_object_define_own_property (obj_p,
+ ecma_get_magic_string (LIT_MAGIC_STRING_GET),
+ &prop_desc);
+ JERRY_ASSERT (ecma_is_value_true (completion));
- /* b. */
- if (src_prop_desc_p->set_p == NULL)
- {
- prop_desc.value = ECMA_VALUE_UNDEFINED;
- }
- else
- {
- prop_desc.value = ecma_make_object_value (src_prop_desc_p->set_p);
- }
+ /* b. */
+ if (src_prop_desc_p->set_p == NULL)
+ {
+ prop_desc.value = ECMA_VALUE_UNDEFINED;
+ }
+ else
+ {
+ prop_desc.value = ecma_make_object_value (src_prop_desc_p->set_p);
+ }
- completion = ecma_op_object_define_own_property (obj_p,
- ecma_get_magic_string (LIT_MAGIC_STRING_SET),
- &prop_desc);
- JERRY_ASSERT (ecma_is_value_true (completion));
+ completion = ecma_op_object_define_own_property (obj_p,
+ ecma_get_magic_string (LIT_MAGIC_STRING_SET),
+ &prop_desc);
+ JERRY_ASSERT (ecma_is_value_true (completion));
+ }
}
prop_desc.value = ecma_make_boolean_value (src_prop_desc_p->flags & ECMA_PROP_IS_ENUMERABLE);
diff --git a/tests/test262-es6-excludelist.xml b/tests/test262-es6-excludelist.xml
index a277e10e9..aeab5a456 100644
--- a/tests/test262-es6-excludelist.xml
+++ b/tests/test262-es6-excludelist.xml
@@ -161,7 +161,6 @@
-
@@ -175,8 +174,6 @@
-
-