From 54e4de39ab77537f987ea5f1a2e630e68503afce Mon Sep 17 00:00:00 2001 From: Hyukwoo Park Date: Fri, 14 Feb 2020 18:25:26 +0900 Subject: [PATCH] Fix attributes of length property for builtin objects (#3556) * length property has the attributes {[[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true} based on ECMA-262 v6, 19.2.4.1 JerryScript-DCO-1.0-Signed-off-by: HyukWoo Park hyukwoo.park@samsung.com --- jerry-core/ecma/base/ecma-globals.h | 9 ++ .../builtin-objects/ecma-builtin-array.inc.h | 3 +- .../ecma-builtin-arraybuffer.inc.h | 2 +- .../ecma-builtin-boolean.inc.h | 3 +- .../ecma-builtin-dataview.inc.h | 2 +- .../builtin-objects/ecma-builtin-date.inc.h | 2 +- .../builtin-objects/ecma-builtin-error.inc.h | 3 +- .../ecma-builtin-evalerror.inc.h | 3 +- .../ecma-builtin-function-prototype.inc.h | 3 +- .../ecma-builtin-function.inc.h | 3 +- .../ecma-builtin-generator-function.inc.h | 2 +- .../builtin-objects/ecma-builtin-map.inc.h | 2 +- .../builtin-objects/ecma-builtin-number.inc.h | 3 +- .../builtin-objects/ecma-builtin-object.inc.h | 3 +- .../ecma-builtin-promise-prototype.inc.h | 4 - .../ecma-builtin-promise.inc.h | 2 +- .../ecma-builtin-rangeerror.inc.h | 3 +- .../ecma-builtin-referenceerror.inc.h | 3 +- .../builtin-objects/ecma-builtin-regexp.inc.h | 3 +- .../builtin-objects/ecma-builtin-set.inc.h | 2 +- .../builtin-objects/ecma-builtin-string.inc.h | 3 +- .../ecma-builtin-symbol-prototype.inc.h | 4 - .../builtin-objects/ecma-builtin-symbol.inc.h | 2 +- .../ecma-builtin-syntaxerror.inc.h | 3 +- .../ecma-builtin-typeerror.inc.h | 3 +- .../ecma-builtin-urierror.inc.h | 3 +- .../ecma-builtin-weakmap.inc.h | 2 +- .../ecma-builtin-weakset.inc.h | 2 +- .../ecma-builtin-typedarray-template.inc.h | 7 +- .../typedarray/ecma-builtin-typedarray.inc.h | 2 +- .../es2015/25/25.04/25.04.05/25.04.05-001.js | 2 +- tests/jerry-test-suite/es51-profile-list | 1 - tests/jerry/es2015/length-property.js | 102 ++++++++++++++++++ .../es5.1/func-length.js} | 2 +- 34 files changed, 140 insertions(+), 58 deletions(-) create mode 100644 tests/jerry/es2015/length-property.js rename tests/{jerry-test-suite/15/15.03/15.03.03/15.03.03.02/15.03.03.02-001.js => jerry/es5.1/func-length.js} (95%) diff --git a/jerry-core/ecma/base/ecma-globals.h b/jerry-core/ecma/base/ecma-globals.h index 5d3718376..789d79c2e 100644 --- a/jerry-core/ecma/base/ecma-globals.h +++ b/jerry-core/ecma/base/ecma-globals.h @@ -398,6 +398,15 @@ typedef enum */ #define ECMA_PROPERTY_FIXED 0 +/** + * Default flag of length property. + */ +#if ENABLED (JERRY_ES2015) +#define ECMA_PROPERTY_FLAG_DEFAULT_LENGTH ECMA_PROPERTY_FLAG_CONFIGURABLE +#else /* !ENABLED (JERRY_ES2015) */ +#define ECMA_PROPERTY_FLAG_DEFAULT_LENGTH ECMA_PROPERTY_FIXED +#endif /* ENABLED (JERRY_ES2015) */ + /** * Shift for property name part. */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h index 43ff947ba..ff1df5f02 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h @@ -32,10 +32,9 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, /* Number properties: * (property name, object pointer getter) */ -/* ECMA-262 v5, 15.4.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Routine properties: * (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h index c2c7e26b1..a3b162f39 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h @@ -26,7 +26,7 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h index a26f129d2..dd5132b92 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h @@ -32,10 +32,9 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, /* Number properties: * (property name, object pointer getter) */ -/* ECMA-262 v5, 15.6.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) #endif /* ENABLED (JERRY_BUILTIN_BOOLEAN) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-dataview.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-dataview.inc.h index 75fbc688f..0732f6c65 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-dataview.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-dataview.inc.h @@ -27,7 +27,7 @@ /* ECMA-262 v6, 23.1.2 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ECMA-262 v6, 23.1 */ STRING_VALUE (LIT_MAGIC_STRING_NAME, diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h index fc38bf56b..f805b7794 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h @@ -28,7 +28,7 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 7, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) ROUTINE (LIT_MAGIC_STRING_PARSE, ecma_builtin_date_parse, 1, 1) ROUTINE (LIT_MAGIC_STRING_UTC_U, ecma_builtin_date_utc, NON_FIXED, 7) diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-error.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-error.inc.h index 3fbddac22..e965de497 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-error.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-error.inc.h @@ -22,10 +22,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.11.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h index c6d7626b7..f2fd2682a 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h @@ -24,10 +24,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.11.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.inc.h index c5d8b1dba..94f0e8704 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.inc.h @@ -30,10 +30,9 @@ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, /* Number properties: * (property name, object pointer getter) */ -/* ECMA-262 v5, 15.3.4 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 0, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Routine properties: * (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-function.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-function.inc.h index c6a4a7bd6..ede266158 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-function.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-function.inc.h @@ -30,9 +30,8 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, /* Number properties: * (property name, object pointer getter) */ -/* ECMA-262 v5, 15.3.3.2 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-generator-function.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-generator-function.inc.h index bbae8b2d0..d4e8c4bc6 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-generator-function.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-generator-function.inc.h @@ -26,7 +26,7 @@ STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_GENERATOR_FUNCTION_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE) -/* ECMA-262 v6, 25.2.2 */ +/* ECMA-262 v6, 25.2.2.1 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_CONFIGURABLE) diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-map.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-map.inc.h index da6951fc0..2b09c9c08 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-map.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-map.inc.h @@ -27,7 +27,7 @@ /* ECMA-262 v6, 23.1.2 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 0, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ECMA-262 v6, 23.1 */ STRING_VALUE (LIT_MAGIC_STRING_NAME, diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h index a2b23ced9..8088655dc 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h @@ -24,10 +24,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.7.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* ECMA-262 v5, 15.7.3.4 */ NUMBER_VALUE (LIT_MAGIC_STRING_NAN, diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-object.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-object.inc.h index 139931a91..fde4c7eca 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-object.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-object.inc.h @@ -22,10 +22,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.2.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-promise-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-promise-prototype.inc.h index e4190984e..555caf644 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-promise-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-promise-prototype.inc.h @@ -24,10 +24,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_PROMISE, ECMA_PROPERTY_CONFIGURABLE_WRITABLE) -NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, - 1, - ECMA_PROPERTY_FLAG_WRITABLE) - #if ENABLED (JERRY_ES2015) /* ECMA-262 v6, 25.4.5.4 */ STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG, diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-promise.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-promise.inc.h index 9eebf7990..117e50bfd 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-promise.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-promise.inc.h @@ -26,7 +26,7 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h index b1da135d2..f29b82507 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h @@ -24,10 +24,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.11.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h index 077a93d31..ff0638f3c 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h @@ -24,10 +24,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.11.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h index 2001f1c10..bbc0be6c4 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h @@ -21,10 +21,9 @@ #if ENABLED (JERRY_BUILTIN_REGEXP) -/* ECMA-262 v5, 15.10.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 2, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* ECMA-262 v5, 15.10.5.1 */ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-set.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-set.inc.h index 227bb3442..dc63bd692 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-set.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-set.inc.h @@ -27,7 +27,7 @@ /* ECMA-262 v6, 23.2.2 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 0, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ECMA-262 v6, 23.1 */ STRING_VALUE (LIT_MAGIC_STRING_NAME, diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h index 3f5d5469d..d3e8d88bc 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h @@ -24,10 +24,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.5.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-symbol-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-symbol-prototype.inc.h index 9fe804a6a..a3a5b4e65 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-symbol-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-symbol-prototype.inc.h @@ -28,10 +28,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_SYMBOL, ECMA_PROPERTY_CONFIGURABLE_WRITABLE) -NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, - 0, - ECMA_PROPERTY_FLAG_WRITABLE) - ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ecma_builtin_symbol_prototype_object_to_string, 0, 0) ROUTINE (LIT_MAGIC_STRING_VALUE_OF_UL, ecma_builtin_symbol_prototype_object_value_of, 0, 0) ROUTINE_CONFIGURABLE_ONLY (LIT_GLOBAL_SYMBOL_TO_PRIMITIVE, 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 24736b530..294907f2b 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-symbol.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-symbol.inc.h @@ -27,7 +27,7 @@ /* ECMA-262 v6, 19.4.2 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 0, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h index 3585aea91..848b1bcd3 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h @@ -24,10 +24,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.11.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h index 587c4e769..5c5b42a25 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h @@ -24,10 +24,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.11.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h index c0d555be1..84845b6d7 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h @@ -24,10 +24,9 @@ /* Number properties: * (property name, number value, writable, enumerable, configurable) */ -/* ECMA-262 v5, 15.11.3 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_DEFAULT_LENGTH) /* Object properties: * (property name, object pointer getter) */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-weakmap.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-weakmap.inc.h index 5abc2e36a..a27be6bcb 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-weakmap.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-weakmap.inc.h @@ -27,7 +27,7 @@ /* ECMA-262 v6, 23.3.2 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 0, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ECMA-262 v6, 23.1 */ STRING_VALUE (LIT_MAGIC_STRING_NAME, diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-weakset.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-weakset.inc.h index a4f1be668..6fc3a749c 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-weakset.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-weakset.inc.h @@ -27,7 +27,7 @@ /* ECMA-262 v6, 23.4.2 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 0, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ECMA-262 v6, 23.4 */ STRING_VALUE (LIT_MAGIC_STRING_NAME, diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-template.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-template.inc.h index f1ba74060..f4e161276 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-template.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-template.inc.h @@ -32,18 +32,13 @@ /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ES2015 22.2.5.1 */ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, TYPEDARRAY_BYTES_PER_ELEMENT, ECMA_PROPERTY_FIXED) -/* ES2015 22.2.5 */ -NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, - 3, - ECMA_PROPERTY_FIXED) - /* ES2015 22.2.5 */ STRING_VALUE (LIT_MAGIC_STRING_NAME, TYPEDARRAY_MAGIC_STRING_ID, diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h index 6a05ba53b..e46a1852b 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h @@ -24,7 +24,7 @@ /* ES2015 22.2.2 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, - ECMA_PROPERTY_FIXED) + ECMA_PROPERTY_FLAG_CONFIGURABLE) /* ES2015 22.2.2 */ STRING_VALUE (LIT_MAGIC_STRING_NAME, diff --git a/tests/jerry-test-suite/es2015/25/25.04/25.04.05/25.04.05-001.js b/tests/jerry-test-suite/es2015/25/25.04/25.04.05/25.04.05-001.js index 0b3218aa6..b5f194be4 100644 --- a/tests/jerry-test-suite/es2015/25/25.04/25.04.05/25.04.05-001.js +++ b/tests/jerry-test-suite/es2015/25/25.04/25.04.05/25.04.05-001.js @@ -13,4 +13,4 @@ * limitations under the License. */ -assert (Promise.prototype.length === 1); +assert (Promise.length === 1); diff --git a/tests/jerry-test-suite/es51-profile-list b/tests/jerry-test-suite/es51-profile-list index 42d0ceda2..353ea4a1b 100644 --- a/tests/jerry-test-suite/es51-profile-list +++ b/tests/jerry-test-suite/es51-profile-list @@ -1110,7 +1110,6 @@ ./15/15.03/15.03.03/15.03.03.01/15.03.03.01-002.js ./15/15.03/15.03.03/15.03.03.01/15.03.03.01-003.js ./15/15.03/15.03.03/15.03.03.01/15.03.03.01-004.js -./15/15.03/15.03.03/15.03.03.02/15.03.03.02-001.js ./15/15.03/15.03.04/15.03.04.02/15.03.04.02-001.js ./15/15.03/15.03.04/15.03.04.02/15.03.04.02-002.js ./15/15.03/15.03.04/15.03.04.02/15.03.04.02-003.js diff --git a/tests/jerry/es2015/length-property.js b/tests/jerry/es2015/length-property.js new file mode 100644 index 000000000..9625aafa6 --- /dev/null +++ b/tests/jerry/es2015/length-property.js @@ -0,0 +1,102 @@ +/* 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 builtin_objects = [ + Array, + ArrayBuffer, + Boolean, + DataView, + Date, + Error, + EvalError, + Function, + Map, + Number, + Object, + Promise, + RangeError, + ReferenceError, + RegExp, + Set, + String, + Symbol, + SyntaxError, + TypeError, + URIError, + WeakMap, + WeakSet, +]; + +var builtin_prototypes = [Function.prototype] + +var builtin_typedArrays = [ + Float32Array, + Float64Array, + Int16Array, + Int32Array, + Int8Array, + Uint16Array, + Uint32Array, + Uint8Array, + Uint8ClampedArray, +]; + + +(function () { + /* each length property is configurable */ + var desc; + + for (obj of builtin_objects) { + desc = Object.getOwnPropertyDescriptor(obj, 'length'); + assert(desc.writable === false); + assert(desc.enumerable === false); + assert(desc.configurable === true); + } + + for (proto of builtin_prototypes) { + desc = Object.getOwnPropertyDescriptor(proto, 'length'); + assert(desc.writable === false); + assert(desc.enumerable === false); + assert(desc.configurable === true); + } + + for (ta of builtin_typedArrays) { + desc = Object.getOwnPropertyDescriptor(ta, 'length'); + assert(desc.writable === false); + assert(desc.enumerable === false); + assert(desc.configurable === true); + } +})(); + +(function () { + /* each length property can be deleted */ + for (obj of builtin_objects) { + assert(obj.hasOwnProperty('length') === true); + assert(delete obj.length); + assert(obj.hasOwnProperty('length') === false); + } + + for (proto of builtin_prototypes) { + assert(proto.hasOwnProperty('length') === true); + assert(delete proto.length); + assert(proto.hasOwnProperty('length') === false); + } + + for (ta of builtin_typedArrays) { + assert(ta.hasOwnProperty('length') === true); + assert(delete ta.length); + assert(ta.hasOwnProperty('length') === false); + } +})(); diff --git a/tests/jerry-test-suite/15/15.03/15.03.03/15.03.03.02/15.03.03.02-001.js b/tests/jerry/es5.1/func-length.js similarity index 95% rename from tests/jerry-test-suite/15/15.03/15.03.03/15.03.03.02/15.03.03.02-001.js rename to tests/jerry/es5.1/func-length.js index 160561113..b8df01707 100644 --- a/tests/jerry-test-suite/15/15.03/15.03.03/15.03.03.02/15.03.03.02-001.js +++ b/tests/jerry/es5.1/func-length.js @@ -16,4 +16,4 @@ var desc = Object.getOwnPropertyDescriptor(Function, "length"); assert(desc.value === 1 && desc.writable === false && desc.enumerable === false && - desc.configurable === false); \ No newline at end of file + desc.configurable === false);