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:
@@ -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)
|
||||
|
||||
@@ -243,7 +243,6 @@
|
||||
<test id="intl402/String/prototype/toLocaleUpperCase/special_casing_Turkish.js"><reason></reason></test>
|
||||
<test id="language/asi/S7.9_A5.7_T1.js"><reason></reason></test>
|
||||
<test id="language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-function-declaration.js"><reason>No longer a SyntaxError in ES11</reason></test>
|
||||
<test id="language/default-parameters/function-length.js"><reason></reason></test>
|
||||
<test id="language/expressions/assignment/S11.13.1_A5_T1.js"><reason></reason></test>
|
||||
<test id="language/expressions/assignment/S11.13.1_A5_T2.js"><reason></reason></test>
|
||||
<test id="language/expressions/assignment/S11.13.1_A5_T3.js"><reason></reason></test>
|
||||
|
||||
@@ -515,11 +515,9 @@
|
||||
<test id="language/eval-code/indirect/var-env-func-init-global-update-configurable.js"><reason></reason></test>
|
||||
<test id="language/eval-code/indirect/var-env-global-lex-non-strict.js"><reason></reason></test>
|
||||
<test id="language/eval-code/indirect/var-env-var-init-global-new.js"><reason></reason></test>
|
||||
<test id="language/expressions/arrow-function/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/arrow-function/dstr/ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/arrow-function/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/arrow-function/eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/arrow-function/length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/arrow-function/name.js"><reason></reason></test>
|
||||
<test id="language/expressions/arrow-function/param-dflt-yield-expr.js"><reason></reason></test>
|
||||
<test id="language/expressions/assignment/S11.13.1_A5_T1.js"><reason></reason></test>
|
||||
@@ -575,19 +573,14 @@
|
||||
<test id="language/expressions/async-arrow-function/await-as-param-nested-arrow-body-position.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-arrow-function/await-as-param-nested-arrow-parameter-position.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-arrow-function/await-as-param-rest-nested-arrow-parameter-position.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-arrow-function/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-arrow-function/name.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-function/name.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-function/named-dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-function/nameless-dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/name.js"><reason></reason></test>
|
||||
<test id="language/expressions/call/eval-spread-empty-leading.js"><reason></reason></test>
|
||||
<test id="language/expressions/call/eval-spread-empty-trailing.js"><reason></reason></test>
|
||||
<test id="language/expressions/call/eval-spread.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/accessor-name-inst/literal-numeric-leading-decimal.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/accessor-name-static/literal-numeric-leading-decimal.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-method-static/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-method/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/class-name-ident-await-escaped-module.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/class-name-ident-await-module.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/class-name-ident-let-escaped.js"><reason></reason></test>
|
||||
@@ -604,15 +597,7 @@
|
||||
<test id="language/expressions/class/dstr/meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/dstr/meth-static-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/dstr/meth-static-dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/gen-method-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/gen-method-static/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/gen-method/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/method-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/method-static/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/method/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/name.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/setter-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/static-method-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/compound-assignment/S11.13.2_A7.10_T4.js"><reason></reason></test>
|
||||
<test id="language/expressions/compound-assignment/S11.13.2_A7.11_T4.js"><reason></reason></test>
|
||||
<test id="language/expressions/compound-assignment/S11.13.2_A7.1_T4.js"><reason></reason></test>
|
||||
@@ -624,17 +609,13 @@
|
||||
<test id="language/expressions/compound-assignment/S11.13.2_A7.7_T4.js"><reason></reason></test>
|
||||
<test id="language/expressions/compound-assignment/S11.13.2_A7.8_T4.js"><reason></reason></test>
|
||||
<test id="language/expressions/compound-assignment/S11.13.2_A7.9_T4.js"><reason></reason></test>
|
||||
<test id="language/expressions/function/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/function/dstr/ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/function/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/function/eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/function/length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/function/name.js"><reason></reason></test>
|
||||
<test id="language/expressions/generators/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/generators/dstr/ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/generators/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/generators/eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/generators/length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/generators/name.js"><reason></reason></test>
|
||||
<test id="language/expressions/import.meta/distinct-for-each-module.js"><reason></reason></test>
|
||||
<test id="language/expressions/import.meta/import-meta-is-an-ordinary-object.js"><reason></reason></test>
|
||||
@@ -645,17 +626,11 @@
|
||||
<test id="language/expressions/object/dstr/gen-meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/dstr/meth-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/dstr/meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/async-meth-dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/early-errors-object-async-method-duplicate-parameters.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/early-errors-object-method-async-lineterminator.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/gen-meth-dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/gen-meth-eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/generator-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/meth-dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/meth-eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/name-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/setter-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/expressions/postfix-decrement/S11.3.2_A5_T1.js"><reason></reason></test>
|
||||
<test id="language/expressions/postfix-decrement/S11.3.2_A5_T2.js"><reason></reason></test>
|
||||
<test id="language/expressions/postfix-decrement/S11.3.2_A5_T3.js"><reason></reason></test>
|
||||
@@ -857,12 +832,9 @@
|
||||
<test id="language/module-code/parse-err-hoist-lex-gen.js"><reason></reason></test>
|
||||
<test id="language/module-code/parse-err-yield.js"><reason></reason></test>
|
||||
<test id="language/reserved-words/await-module.js"><reason></reason></test>
|
||||
<test id="language/statements/async-function/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/async-function/let-newline-await-in-async-function.js"><reason></reason></test>
|
||||
<test id="language/statements/class/accessor-name-inst/literal-numeric-leading-decimal.js"><reason></reason></test>
|
||||
<test id="language/statements/class/accessor-name-static/literal-numeric-leading-decimal.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-method-static/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-method/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/class/class-name-ident-await-escaped-module.js"><reason></reason></test>
|
||||
<test id="language/statements/class/class-name-ident-await-module.js"><reason></reason></test>
|
||||
<test id="language/statements/class/class-name-ident-let-escaped.js"><reason></reason></test>
|
||||
@@ -880,14 +852,6 @@
|
||||
<test id="language/statements/class/dstr/meth-dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/statements/class/dstr/meth-static-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/statements/class/dstr/meth-static-dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/statements/class/gen-method-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/gen-method-static/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/class/gen-method/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/class/method-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/method-static/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/class/method/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/class/setter-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/static-method-length-dflt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/subclass/default-constructor-spread-override.js"><reason></reason></test>
|
||||
<test id="language/statements/class/subclass/superclass-arrow-function.js"><reason></reason></test>
|
||||
<test id="language/statements/class/subclass/superclass-async-function.js"><reason></reason></test>
|
||||
@@ -976,16 +940,12 @@
|
||||
<test id="language/statements/for/let-block-with-newline.js"><reason></reason></test>
|
||||
<test id="language/statements/for/let-identifier-with-newline.js"><reason></reason></test>
|
||||
<test id="language/statements/for/scope-body-lex-open.js"><reason></reason></test>
|
||||
<test id="language/statements/function/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/function/dstr/ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/statements/function/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/statements/function/eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/statements/function/length-dflt.js"><reason></reason></test>
|
||||
<test id="language/statements/generators/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/generators/dstr/ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/statements/generators/dstr/dflt-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/statements/generators/eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/statements/generators/length-dflt.js"><reason></reason></test>
|
||||
<test id="language/statements/if/cptn-else-false-abrupt-empty.js"><reason></reason></test>
|
||||
<test id="language/statements/if/cptn-else-false-nrml.js"><reason></reason></test>
|
||||
<test id="language/statements/if/cptn-else-true-abrupt-empty.js"><reason></reason></test>
|
||||
@@ -8446,7 +8406,6 @@
|
||||
<test id="language/block-scope/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-generator.js"><reason></reason></test>
|
||||
<test id="language/block-scope/syntax/redeclaration/function-name-redeclaration-attempt-with-async-generator.js"><reason></reason></test>
|
||||
<test id="language/block-scope/syntax/redeclaration/generator-name-redeclaration-attempt-with-async-generator.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/dstr/ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/dstr/ary-ptrn-rest-init-ary.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/dstr/ary-ptrn-rest-init-id.js"><reason></reason></test>
|
||||
@@ -8489,7 +8448,6 @@
|
||||
<test id="language/expressions/async-generator/dstr/obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/eval-body-proto-realm.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/named-dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/named-eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/named-yield-identifier-spread-non-strict.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/named-yield-promise-reject-next-catch.js"><reason></reason></test>
|
||||
@@ -8522,7 +8480,6 @@
|
||||
<test id="language/expressions/async-generator/yield-thenable-create-resolving-functions-reject.js"><reason></reason></test>
|
||||
<test id="language/expressions/async-generator/yield-thenable-create-resolving-functions-resolve.js"><reason></reason></test>
|
||||
<test id="language/expressions/await/for-await-of-interleaved.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method-static/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method-static/yield-promise-reject-next-catch.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method-static/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method-static/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
|
||||
@@ -8535,7 +8492,6 @@
|
||||
<test id="language/expressions/class/async-gen-method-static/yield-star-sync-next.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method-static/yield-star-sync-return.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method-static/yield-star-sync-throw.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method/yield-promise-reject-next-catch.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/async-gen-method/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
|
||||
@@ -9097,7 +9053,6 @@
|
||||
<test id="language/expressions/object/dstr/async-gen-meth-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/dstr/async-gen-meth-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/dstr/async-gen-meth-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/async-gen-meth-dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/async-gen-meth-eval-var-scope-syntax-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js"><reason></reason></test>
|
||||
<test id="language/expressions/object/method-definition/async-gen-yield-promise-reject-next-catch.js"><reason></reason></test>
|
||||
@@ -9124,7 +9079,6 @@
|
||||
<test id="language/module-code/top-level-await/syntax/for-await-await-expr-regexp.js"><reason></reason></test>
|
||||
<test id="language/module-code/top-level-await/syntax/for-await-await-expr-template-literal.js"><reason></reason></test>
|
||||
<test id="language/module-code/top-level-await/syntax/for-await-await-expr-this.js"><reason></reason></test>
|
||||
<test id="language/statements/async-generator/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/async-generator/dstr/ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/statements/async-generator/dstr/ary-ptrn-rest-init-ary.js"><reason></reason></test>
|
||||
<test id="language/statements/async-generator/dstr/ary-ptrn-rest-init-id.js"><reason></reason></test>
|
||||
@@ -9163,7 +9117,6 @@
|
||||
<test id="language/statements/async-generator/yield-star-sync-next.js"><reason></reason></test>
|
||||
<test id="language/statements/async-generator/yield-star-sync-return.js"><reason></reason></test>
|
||||
<test id="language/statements/async-generator/yield-star-sync-throw.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method-static/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method-static/yield-promise-reject-next-catch.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method-static/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method-static/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
|
||||
@@ -9176,7 +9129,6 @@
|
||||
<test id="language/statements/class/async-gen-method-static/yield-star-sync-next.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method-static/yield-star-sync-return.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method-static/yield-star-sync-throw.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method/dflt-params-trailing-comma.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method/yield-promise-reject-next-catch.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
|
||||
<test id="language/statements/class/async-gen-method/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
|
||||
|
||||
Reference in New Issue
Block a user