Fix attributes of length property for function objects (#3570)

fix length property of function objects to be configurable (ECMA-262 v6, 19.2.4.1)

JerryScript-DCO-1.0-Signed-off-by: HyukWoo Park hyukwoo.park@samsung.com
This commit is contained in:
Hyukwoo Park
2020-03-12 23:00:53 +09:00
committed by GitHub
parent 6ef0a0e07e
commit 47d85a12e2
5 changed files with 80 additions and 2 deletions
+21
View File
@@ -100,3 +100,24 @@ var builtin_typedArrays = [
assert(ta.hasOwnProperty('length') === false);
}
})();
(function () {
/* test length property of function objects */
var normal_func = function () {};
var arrow_func = () => {};
var functions = [normal_func, arrow_func];
for (func of functions) {
var desc = Object.getOwnPropertyDescriptor(func, 'length');
assert(desc.writable === false);
assert(desc.enumerable === false);
assert(desc.configurable === true);
}
for (func of functions) {
assert(func.hasOwnProperty('length') === true);
assert(delete func.length);
assert(func.hasOwnProperty('length') === false);
}
})();
@@ -14,7 +14,7 @@
var hasProp = $ => { }
Object.preventExtensions(hasProp);
assert (Object.isSealed(hasProp));
assert (Object.isSealed(hasProp) === false);
var keys = Object.getOwnPropertyNames(hasProp);
assert (keys.length === 1);
@@ -16,7 +16,7 @@ class A {
constructor() {
var hasProp = $ => {}
Object.preventExtensions(hasProp);
assert(Object.isSealed(hasProp) === true);
assert(Object.isSealed(hasProp) === false);
}
super() {
$: $