diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.c index acb05f525..c63298850 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.c @@ -2069,9 +2069,9 @@ ecma_builtin_array_reduce_from (ecma_value_t callbackfn, /**< routine's 1st argu } /* 5. */ - if (len == 0 && ecma_is_value_undefined (initial_value)) + if (len == 0 && args_number == 1) { - return ecma_raise_type_error (ECMA_ERR_MSG ("Initial value cannot be undefined.")); + return ecma_raise_type_error (ECMA_ERR_MSG ("Reduce of empty array with no initial value.")); } JERRY_ASSERT (ecma_is_value_object (callbackfn)); diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.inc.h index 59ba8d323..5f12393d8 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.inc.h @@ -67,8 +67,8 @@ ROUTINE (LIT_MAGIC_STRING_FOR_EACH_UL, ECMA_ARRAY_PROTOTYPE_FOR_EACH, 2, 1) ROUTINE (LIT_MAGIC_STRING_MAP, ECMA_ARRAY_PROTOTYPE_MAP, 2, 1) ROUTINE (LIT_MAGIC_STRING_FILTER, ECMA_ARRAY_PROTOTYPE_FILTER, 2, 1) /* Note these 2 routines must be in this order */ -ROUTINE (LIT_MAGIC_STRING_REDUCE, ECMA_ARRAY_PROTOTYPE_REDUCE, NON_FIXED, 1) -ROUTINE (LIT_MAGIC_STRING_REDUCE_RIGHT_UL, ECMA_ARRAY_PROTOTYPE_REDUCE_RIGHT, NON_FIXED, 1) +ROUTINE (LIT_MAGIC_STRING_REDUCE, ECMA_ARRAY_PROTOTYPE_REDUCE, 2, 1) +ROUTINE (LIT_MAGIC_STRING_REDUCE_RIGHT_UL, ECMA_ARRAY_PROTOTYPE_REDUCE_RIGHT, 2, 1) #if ENABLED (JERRY_ES2015) ROUTINE (LIT_MAGIC_STRING_FIND, ECMA_ARRAY_PROTOTYPE_FIND, 2, 1) ROUTINE (LIT_MAGIC_STRING_FIND_INDEX, ECMA_ARRAY_PROTOTYPE_FIND_INDEX, 2, 1) diff --git a/tests/jerry/array-prototype-reduce-right.js b/tests/jerry/array-prototype-reduce-right.js index a9a71cb27..9b3ca5fa8 100644 --- a/tests/jerry/array-prototype-reduce-right.js +++ b/tests/jerry/array-prototype-reduce-right.js @@ -34,14 +34,6 @@ try { assert(e instanceof TypeError); } -try { - var arg2; - [].reduceRight(func, arg2); - assert(false); -} catch(e) { - assert(e instanceof TypeError); -} - try { var a = new Array(); a.length = 10; @@ -54,6 +46,8 @@ try { // various checks assert([].reduceRight(func, 1) === 1); +assert([].reduceRight(func, undefined) === undefined); + assert([0].reduceRight(func) === 0); assert([0, 1].reduceRight(func) === 1); diff --git a/tests/jerry/array-prototype-reduce.js b/tests/jerry/array-prototype-reduce.js index 6193ec7f0..908818a60 100644 --- a/tests/jerry/array-prototype-reduce.js +++ b/tests/jerry/array-prototype-reduce.js @@ -39,6 +39,8 @@ catch(e) { // various checks assert ([].reduce(func, 1) === 1); +assert ([].reduce(func, undefined) === undefined); + assert ([0].reduce(func) === 0); assert ([0, 1].reduce(func) === 1);