Implement proper function length support (#4290)

Comma after last destructuring argument has been fixed as well

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2020-10-19 10:55:26 +02:00
committed by GitHub
parent 9da1211e26
commit f384642409
10 changed files with 157 additions and 130 deletions
+15 -6
View File
@@ -32,17 +32,26 @@ function f1(a,) {}
assert(f1.length === 1)
function f2(a = 1,) {}
assert(f2.length === 1)
assert(f2.length === 0)
function f3(a = 1, b = 1 + 1, c,) {}
assert(f3.length === 3)
assert(f3.length === 0)
var f4 = async(a,) => {}
assert(f4.length === 1)
var f5 = async(a = 1,) => {}
assert(f5.length === 1)
var f5 = async(a = 1,b,) => {}
assert(f5.length === 0)
assert(((a = 1, b = 1 + 1, c,) => {}).length === 3)
assert(((a, b = 1 + 1, c,) => {}).length === 1)
assert(((a = 1, b, c = 1 + 1,) => {}).length === 3)
assert(((a = 1, b, c = 1 + 1,) => {}).length === 0)
function f6([a=1, b], [c, [d = 5] = []], e, [{f} = {}, g],) {}
assert(f6.length === 4)
function f7([a, {b = 1, 4 : c = 2} = {}], {'cc' : d = 5, e}, f, {g, h} = a = {},) {}
assert(f7.length === 3)
function f8(a, [b] = [], ...e) {}
assert(f8.length === 1)