diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer-prototype.inc.h index 20fd26eb2..6753cac6f 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer-prototype.inc.h @@ -31,7 +31,7 @@ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, /* Readonly accessor properties */ ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_BYTE_LENGTH_UL, ecma_builtin_arraybuffer_prototype_bytelength_getter, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) #if ENABLED (JERRY_ES2015) /* ECMA-262 v6, 24.1.4.4 */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-dataview-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-dataview-prototype.inc.h index 0e7866457..03b9a703c 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-dataview-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-dataview-prototype.inc.h @@ -62,17 +62,17 @@ ROUTINE (LIT_MAGIC_STRING_SET_UINT32_UL, ECMA_DATAVIEW_PROTOTYPE_SET_UINT32, 2, /* ECMA-262 v6, 24.2.4.1 */ ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_BUFFER, ECMA_DATAVIEW_PROTOTYPE_BUFFER_GETTER, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ECMA-262 v6, 24.2.4.2 */ ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_BYTE_LENGTH_UL, ECMA_DATAVIEW_PROTOTYPE_BYTE_LENGTH_GETTER, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ECMA-262 v6, 24.2.4.3 */ ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_BYTE_OFFSET_UL, ECMA_DATAVIEW_PROTOTYPE_BYTE_OFFSET_GETTER, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) #endif /* ENABLED (JERRY_ES2015_BUILTIN_DATAVIEW */ diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h index f820a1095..954a60956 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h @@ -30,20 +30,20 @@ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, /* ES2015 22.2.3.1 */ ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_BUFFER, ecma_builtin_typedarray_prototype_buffer_getter, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ES2015 22.2.3.2 */ ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_BYTE_LENGTH_UL, ecma_builtin_typedarray_prototype_bytelength_getter, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ES2015 22.2.3.3 */ ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_BYTE_OFFSET_UL, ecma_builtin_typedarray_prototype_byteoffset_getter, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ES2015 22.2.3.17 */ ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_LENGTH, ecma_builtin_typedarray_prototype_length_getter, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) #if ENABLED (JERRY_ES2015) /* ECMA-262 v6, 23.1.3.13 */ diff --git a/tests/jerry/es2015/builtin-objects-accessor-property-configurable.js b/tests/jerry/es2015/builtin-objects-accessor-property-configurable.js new file mode 100644 index 000000000..1ac4a85b8 --- /dev/null +++ b/tests/jerry/es2015/builtin-objects-accessor-property-configurable.js @@ -0,0 +1,48 @@ +// Copyright JS Foundation and other contributors, http://js.foundation +// +// 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 test_failed = false; + +function verifyConfigurableAccessor (obj, name, string) { + let prop = Object.getOwnPropertyDescriptor (obj, name); + if (prop.get && !prop.configurable) { + print (string + " should be configurable, but wasn't"); + test_failed = true; + } +} + +for (let builtin_name of Reflect.ownKeys (this)) { + let builtin_obj = this[builtin_name]; + if (builtin_name[0] === builtin_name[0].toUpperCase () && typeof builtin_obj == "function") { + for (let prop of Reflect.ownKeys (builtin_obj)) { + verifyConfigurableAccessor (builtin_obj, prop, builtin_name + "." + prop.toString ()); + } + + let builtin_proto = builtin_obj.prototype; + if (builtin_proto) { + for (let prop of Reflect.ownKeys (builtin_proto)) { + verifyConfigurableAccessor (builtin_proto, prop, builtin_name + ".prototype." + prop.toString ()); + } + } + + builtin_proto = Reflect.getPrototypeOf (builtin_obj); + if (builtin_proto !== Function.prototype) { + for (let prop of Reflect.ownKeys (builtin_proto.prototype)) { + verifyConfigurableAccessor (builtin_proto.prototype, prop, builtin_name + ".[[Prototype]].prototype." + prop.toString ()); + } + } + } +} + +assert (!test_failed);