summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/statements/class/static-init-arguments-functions.js
blob: 0473586d1d15361bb322dae0758cba28950de5fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-class-definitions-static-semantics-early-errors
description: The identifier `arguments` is not restricted within function forms
info: |
  ClassStaticBlockBody : ClassStaticBlockStatementList

  - It is a Syntax Error if ContainsArguments of ClassStaticBlockStatementList
    is true.
includes: [compareArray.js]
features: [class-static-block]
---*/

var fn, fnParam;
var gen, genParam;
var asyncFn, asyncFnParam;

class C {
  static {
    (function({test262 = fnParam = arguments}) {
      fn = arguments;
    })('function');

    (function * ({test262 = genParam = arguments}) {
      gen = arguments;
    })('generator function').next();

    (async function ({test262 = asyncFnParam = arguments}) {
      asyncFn = arguments;
    })('async function');
  }
}

assert.compareArray(['function'], fn, 'body');
assert.compareArray(['function'], fnParam, 'parameter');
assert.compareArray(['generator function'], gen, 'body');
assert.compareArray(['generator function'], genParam, 'parameter');
assert.compareArray(['async function'], asyncFn, 'body');
assert.compareArray(['async function'], asyncFnParam, 'parameter');

reportCompare(0, 0);