Fix Symbol properties descriptors. (#3581)

Symbol properites descriptors had invalid values

Fixes #3578

JerryScript-DCO-1.0-Signed-off-by: Rafal Walczyna r.walczyna@samsung.com
This commit is contained in:
Rafal Walczyna 2020-02-24 14:06:14 +01:00 committed by GitHub
parent 6430d1a3a3
commit 20300189cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 16 deletions

View File

@ -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) */

View File

@ -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

View File

@ -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) \

View File

@ -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) */

View File

@ -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 = {};