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 a1f17add5..04a3f15ca 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 @@ -76,8 +76,10 @@ ROUTINE (LIT_MAGIC_STRING_FILL, ECMA_ARRAY_PROTOTYPE_FILL, 3, 1) ROUTINE (LIT_MAGIC_STRING_COPY_WITHIN, ECMA_ARRAY_PROTOTYPE_COPY_WITHIN, NON_FIXED, 2) ROUTINE (LIT_MAGIC_STRING_ENTRIES, ECMA_ARRAY_PROTOTYPE_ENTRIES, 0, 0) ROUTINE (LIT_MAGIC_STRING_KEYS, ECMA_ARRAY_PROTOTYPE_KEYS, 0, 0) -INTRINSIC_PROPERTY (LIT_MAGIC_STRING_VALUES, LIT_INTERNAL_MAGIC_STRING_ARRAY_PROTOTYPE_VALUES) -INTRINSIC_PROPERTY (LIT_GLOBAL_SYMBOL_ITERATOR, LIT_INTERNAL_MAGIC_STRING_ARRAY_PROTOTYPE_VALUES) +INTRINSIC_PROPERTY (LIT_MAGIC_STRING_VALUES, LIT_INTERNAL_MAGIC_STRING_ARRAY_PROTOTYPE_VALUES, + ECMA_PROPERTY_CONFIGURABLE_WRITABLE) +INTRINSIC_PROPERTY (LIT_GLOBAL_SYMBOL_ITERATOR, LIT_INTERNAL_MAGIC_STRING_ARRAY_PROTOTYPE_VALUES, + ECMA_PROPERTY_CONFIGURABLE_WRITABLE) #endif /* ENABLED (JERRY_ES2015) */ #endif /* ENABLED (JERRY_BUILTIN_ARRAY) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-macro-defines.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-macro-defines.inc.h index 7c299b8f2..40afcf958 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-macro-defines.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-macro-defines.inc.h @@ -31,7 +31,7 @@ #endif /* !SYMBOL_VALUE */ #ifndef INTRINSIC_PROPERTY -#define INTRINSIC_PROPERTY(name, magic_string_id) +#define INTRINSIC_PROPERTY(name, magic_string_id, prop_attributes) #endif /* !INTRINSIC_PROPERTY */ #ifndef ACCESSOR_BUILTIN_FUNCTION_OBJECT diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-internal-routines-template.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-internal-routines-template.inc.h index f1fe9801d..8a95d817d 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-internal-routines-template.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-internal-routines-template.inc.h @@ -182,11 +182,11 @@ const ecma_builtin_property_descriptor_t PROPERTY_DESCRIPTOR_LIST_NAME[] = ECMA_PROPERTY_FIXED, \ desc_magic_string_id \ }, -#define INTRINSIC_PROPERTY(name, magic_string_id) \ +#define INTRINSIC_PROPERTY(name, magic_string_id, prop_attributes) \ { \ name, \ ECMA_BUILTIN_PROPERTY_INTRINSIC_PROPERTY, \ - ECMA_PROPERTY_CONFIGURABLE_WRITABLE, \ + prop_attributes, \ magic_string_id \ }, #define ACCESSOR_BUILTIN_FUNCTION(name, getter_builtin_id, setter_builtin_id, prop_attributes) \ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-symbol.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-symbol.inc.h index 294907f2b..cb932b1cb 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-symbol.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-symbol.inc.h @@ -39,47 +39,58 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, /* ECMA-262 v6, 19.4.2.2 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_HAS_INSTANCE, - LIT_GLOBAL_SYMBOL_HAS_INSTANCE) + LIT_GLOBAL_SYMBOL_HAS_INSTANCE, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.3 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_IS_CONCAT_SPREADABLE, - LIT_GLOBAL_SYMBOL_IS_CONCAT_SPREADABLE) + LIT_GLOBAL_SYMBOL_IS_CONCAT_SPREADABLE, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.4 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_ITERATOR, - LIT_GLOBAL_SYMBOL_ITERATOR) + LIT_GLOBAL_SYMBOL_ITERATOR, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.6 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_MATCH, - LIT_GLOBAL_SYMBOL_MATCH) + LIT_GLOBAL_SYMBOL_MATCH, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.8 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_REPLACE, - LIT_GLOBAL_SYMBOL_REPLACE) + LIT_GLOBAL_SYMBOL_REPLACE, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.9 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_SEARCH, - LIT_GLOBAL_SYMBOL_SEARCH) + LIT_GLOBAL_SYMBOL_SEARCH, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.10 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_SPECIES, - LIT_GLOBAL_SYMBOL_SPECIES) + LIT_GLOBAL_SYMBOL_SPECIES, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.11 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_SPLIT, - LIT_GLOBAL_SYMBOL_SPLIT) + LIT_GLOBAL_SYMBOL_SPLIT, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.12 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TO_PRIMITIVE, - LIT_GLOBAL_SYMBOL_TO_PRIMITIVE) + LIT_GLOBAL_SYMBOL_TO_PRIMITIVE, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.13 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TO_STRING_TAG, - LIT_GLOBAL_SYMBOL_TO_STRING_TAG) + LIT_GLOBAL_SYMBOL_TO_STRING_TAG, + ECMA_PROPERTY_FIXED) /* ECMA-262 v6, 19.4.2.14 */ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_UNSCOPABLES, - LIT_GLOBAL_SYMBOL_UNSCOPABLES) + LIT_GLOBAL_SYMBOL_UNSCOPABLES, + ECMA_PROPERTY_FIXED) /* Routine properties: * (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */ diff --git a/tests/jerry/es2015/symbol.js b/tests/jerry/es2015/symbol.js index 329a7c515..c23308baa 100644 --- a/tests/jerry/es2015/symbol.js +++ b/tests/jerry/es2015/symbol.js @@ -85,6 +85,11 @@ var a = ['hasInstance', a.forEach (function (e) { assert (Symbol[e].toString() === ('Symbol(Symbol.' + e +')')); assert (typeof Symbol[e] === 'symbol'); + /* Check for property descriptor ES 6 19.4.2.2 - 19.4.2.14 */ + var desc = Object.getOwnPropertyDescriptor(Symbol, e) + assert (desc.writable === false); + assert (desc.enumerable === false); + assert (desc.configurable === false); }); var obj = {};