diff --git a/jerry-core/ecma/operations/ecma-array-object.cpp b/jerry-core/ecma/operations/ecma-array-object.cpp index 430d8895e..5e6e00e93 100644 --- a/jerry-core/ecma/operations/ecma-array-object.cpp +++ b/jerry-core/ecma/operations/ecma-array-object.cpp @@ -414,7 +414,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o return ecma_op_general_object_define_own_property (obj_p, property_name_p, property_desc_p, - false); + is_throw); } // 4. diff --git a/tests/jerry/object-defineproperty.js b/tests/jerry/object-defineproperty.js new file mode 100644 index 000000000..6a013472b --- /dev/null +++ b/tests/jerry/object-defineproperty.js @@ -0,0 +1,40 @@ +// Copyright 2015 Samsung Electronics Co., Ltd. +// Copyright 2015 University of Szeged. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +var obj = []; + +Object.defineProperty (obj, "prop", { + value: 2010, + writable: true, + enumerable: true, + configurable: false +}); + +assert (obj.hasOwnProperty ("prop")); +function getFunc() { + return 20; +} + +try { + Object.defineProperty (obj, "prop", { + get: getFunc + }); + assert (false); +} catch (e) { + assert (e instanceof TypeError); + var desc = Object.getOwnPropertyDescriptor (obj, "prop"); + assert (desc.value === 2010); + assert (typeof (desc.get) === 'undefined'); +} \ No newline at end of file