diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-object.c b/jerry-core/ecma/builtin-objects/ecma-builtin-object.c index c637eda68..7a34a6d3b 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-object.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-object.c @@ -1107,9 +1107,7 @@ ecma_builtin_object_object_assign (ecma_object_t *target_p, /**< target object * } /* 5.c.iii */ - if ((prop_desc.flags & JERRY_PROP_IS_ENUMERABLE) - && (((prop_desc.flags & JERRY_PROP_IS_VALUE_DEFINED) && !ecma_is_value_undefined (prop_desc.value)) - || (prop_desc.flags & JERRY_PROP_IS_GET_DEFINED))) + if (prop_desc.flags & JERRY_PROP_IS_ENUMERABLE) { /* 5.c.iii.1 */ ecma_value_t prop_value = ecma_op_object_get (from_obj_p, property_name_p); diff --git a/tests/jerry/es.next/object-assign.js b/tests/jerry/es.next/object-assign.js index 93ed999d1..248e14f6e 100644 --- a/tests/jerry/es.next/object-assign.js +++ b/tests/jerry/es.next/object-assign.js @@ -165,3 +165,10 @@ var result = Object.assign ({}, obj); assert (result[foo] == 7); assert (result[asd] == 8); assert (result[bar] == 9); + +obj = {} +assert(Object.assign(obj, { a:1, b:undefined, get c() {}, set d(v) {}}) == obj); +assert(Object.getOwnPropertyDescriptor(obj, "a").enumerable); +assert(Object.getOwnPropertyDescriptor(obj, "b").enumerable); +assert(Object.getOwnPropertyDescriptor(obj, "c").enumerable); +assert(Object.getOwnPropertyDescriptor(obj, "d").enumerable);