summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/fields/unimplemented.js
blob: 49a09468ecd4bedd9d6e41083ba4bd983942487e (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Field syntax doesn't crash the engine when fields are disabled.

// Are fields enabled?
let fieldsEnabled = false;
try {
  Function("class C { x; }");
  fieldsEnabled = true;
} catch (exc) {
  assertEq(exc instanceof SyntaxError, true);
}

// If not, run these tests. (Many other tests cover actual behavior of the
// feature when enabled.)
if (!fieldsEnabled) {
  let source = `class C {
    x
  }`;
  assertThrowsInstanceOf(() => Function(source), SyntaxError);

  source = `class C {
    x = 0;
  }`;
  assertThrowsInstanceOf(() => Function(source), SyntaxError);

  source = `class C {
    0 = 0;
  }`;
  assertThrowsInstanceOf(() => Function(source), SyntaxError);

  source = `class C {
    [0] = 0;
  }`;
  assertThrowsInstanceOf(() => Function(source), SyntaxError);

  source = `class C {
    "hi" = 0;
  }`;
  assertThrowsInstanceOf(() => Function(source), SyntaxError);

  source = `class C {
    "hi" = 0;
  }`;
  assertThrowsInstanceOf(() => Function(source), SyntaxError);

  source = `class C {
    d = function(){};
  }`;
  assertThrowsInstanceOf(() => Function(source), SyntaxError);

  source = `class C {
    d = class D { x = 0; };
  }`;
  assertThrowsInstanceOf(() => Function(source), SyntaxError);
}

if (typeof reportCompare === "function")
  reportCompare(true, true);