aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHyukwoo Park <hyukwoo.park@samsung.com>2020-02-14 18:25:26 +0900
committerGitHub <noreply@github.com>2020-02-14 10:25:26 +0100
commit54e4de39ab77537f987ea5f1a2e630e68503afce (patch)
tree589196cb768dcdd5fe443274f189eee98a729b0b
parent4d67ac3225f1f79e6f6e481eb2294dd642557d30 (diff)
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
-rw-r--r--jerry-core/ecma/base/ecma-globals.h9
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-dataview.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-error.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-function.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-generator-function.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-map.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-object.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-promise-prototype.inc.h4
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-promise.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-set.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-symbol-prototype.inc.h4
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-symbol.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h3
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-weakmap.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-weakset.inc.h2
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-template.inc.h7
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h2
-rw-r--r--tests/jerry-test-suite/es2015/25/25.04/25.04.05/25.04.05-001.js2
-rw-r--r--tests/jerry-test-suite/es51-profile-list1
-rw-r--r--tests/jerry/es2015/length-property.js102
-rw-r--r--tests/jerry/es5.1/func-length.js (renamed from tests/jerry-test-suite/15/15.03/15.03.03/15.03.03.02/15.03.03.02-001.js)2
34 files changed, 140 insertions, 58 deletions
diff --git a/jerry-core/ecma/base/ecma-globals.h b/jerry-core/ecma/base/ecma-globals.h
index 5d371837..789d79c2 100644
--- a/jerry-core/ecma/base/ecma-globals.h
+++ b/jerry-core/ecma/base/ecma-globals.h
@@ -399,6 +399,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.
*/
#define ECMA_PROPERTY_NAME_TYPE_SHIFT (ECMA_PROPERTY_FLAG_SHIFT + 4)
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 43ff947b..ff1df5f0 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 c2c7e26b..a3b162f3 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 a26f129d..dd5132b9 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 75fbc688..0732f6c6 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 fc38bf56..f805b779 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 3fbddac2..e965de49 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 c6d7626b..f2fd2682 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 c5d8b1db..94f0e870 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 c6a4a7bd..ede26615 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 bbae8b2d..d4e8c4bc 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 da6951fc..2b09c9c0 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 a2b23ced..8088655d 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 139931a9..fde4c7ec 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 e4190984..555caf64 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 9eebf799..117e50bf 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 b1da135d..f29b8250 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 077a93d3..ff0638f3 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 2001f1c1..bbc0be6c 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 227bb344..dc63bd69 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 3f5d5469..d3e8d88b 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 9fe804a6..a3a5b4e6 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 24736b53..294907f2 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 3585aea9..848b1bcd 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 587c4e76..5c5b42a2 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 c0d555be..84845b6d 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 5abc2e36..a27be6bc 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 a4f1be66..6fc3a749 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 f1ba7406..f4e16127 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,7 +32,7 @@
/* 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,
@@ -40,11 +40,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
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,
ECMA_PROPERTY_FIXED)
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 6a05ba53..e46a1852 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 0b3218aa..b5f194be 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 42d0ceda..353ea4a1 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 00000000..9625aafa
--- /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
index 16056111..b8df0170 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);