summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/basic/prop-access-error-message.js
blob: 00eb415f7a12e85b404e3479de773f279273c004 (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
// The decompiled expression used in the error messsage should not be confused
// by unrelated value on the stack.

var a = {};
var b = {};
var p = "c";

function doPropAccess() {
  // Both "a.c" and "b.e" are undefined.
  // "a.c" should be used.
  a.c.d = b.e;
}

function testPropAccess() {
  var caught = false;
  try {
    doPropAccess();
  } catch (e) {
    assertEq(e.message.includes("a.c is undefined"), true);
    caught = true;
  }
  assertEq(caught, true);
}

function doElemAccess() {
  // Both "a[x]" and "b.e" are undefined.
  // "a[x]" should be used.
  var x = "c";
  a[x].d = b.e;
}

function testElemAccess() {
  var caught = false;
  try {
    doElemAccess();
  } catch (e) {
    assertEq(e.message.includes("a[x] is undefined"), true);
    caught = true;
  }
  assertEq(caught, true);
}

for (var i = 0; i < 10; i++) {
  testPropAccess();
  testElemAccess();
}