summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/async-functions/parameters-error-reject-promise.js
blob: a6cca7cdde0a6fa31ec6c15b0f95b9a77d8d6bec (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
// |reftest| skip-if(!xulRuntime.shell) -- needs drainJobQueue

class ExpectedError extends Error {
  name = "ExpectedError";
}

class UnexpectedError extends Error {
  name = "UnexpectedError";
}

function throwExpectedError() {
  throw new ExpectedError();
}

async function throwsInParameterExpression(a = throwExpectedError()) {
  throw new UnexpectedError();
}
assertEventuallyThrows(throwsInParameterExpression(), ExpectedError);

async function throwsInObjectDestructuringParameterEmpty({}) {
  throw new UnexpectedError();
}
assertEventuallyThrows(throwsInObjectDestructuringParameterEmpty(), TypeError);

let objectThrowingExpectedError = {
  get a() {
    throw new ExpectedError();
  }
}

async function throwsInObjectDestructuringParameter({a}) {
  throw new UnexpectedError();
}
assertEventuallyThrows(throwsInObjectDestructuringParameter(), TypeError);
assertEventuallyThrows(throwsInObjectDestructuringParameter(objectThrowingExpectedError), ExpectedError);

let iteratorThrowingExpectedError = {
  [Symbol.iterator]() {
    throw new ExpectedError();
  }
};

async function throwsInArrayDestructuringParameterEmpty([]) {
  throw new UnexpectedError();
}
assertEventuallyThrows(throwsInArrayDestructuringParameterEmpty(), TypeError);
assertEventuallyThrows(throwsInArrayDestructuringParameterEmpty(iteratorThrowingExpectedError), ExpectedError);

async function throwsInArrayDestructuringParameter([a]) {
  throw new UnexpectedError();
}
assertEventuallyThrows(throwsInArrayDestructuringParameter(), TypeError);
assertEventuallyThrows(throwsInArrayDestructuringParameter(iteratorThrowingExpectedError), ExpectedError);

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