blob: ef4b84d99b1056309f88cd5504b23d8cf1bb7676 (
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
58
59
60
61
62
63
64
65
66
67
|
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/licenses/publicdomain/
* Contributor:
*/
//-----------------------------------------------------------------------------
var BUGNUMBER = 1478910;
var summary = 'JSMSG_AWAIT_IN_PARAMETER error for incomplete await expr in async function/generator parameter';
//-----------------------------------------------------------------------------
test();
//-----------------------------------------------------------------------------
function test()
{
printBugNumber(BUGNUMBER);
printStatus(summary);
let testAwaitInDefaultExprOfAsyncFunc = (code) => {
assertThrowsInstanceOf(() => eval(code), SyntaxError, "await expression can't be used in parameter");
};
let testNoException = (code) => {
assertEq(completesNormally(code), true);
};
// https://www.ecma-international.org/ecma-262/9.0/
// Async Generator Function Definitions : AsyncGeneratorDeclaration & AsyncGeneratorExpression
// async function* f() {}
// f = async function*() {}
testAwaitInDefaultExprOfAsyncFunc("async function* f(a = await) {}");
testAwaitInDefaultExprOfAsyncFunc("let f = async function*(a = await) {}");
testAwaitInDefaultExprOfAsyncFunc("function f(a = async function*(a = await) {}) {}");
testAwaitInDefaultExprOfAsyncFunc("function f() { a = async function*(a = await) {}; }");
testAwaitInDefaultExprOfAsyncFunc("async function* f() { a = async function*(a = await) {}; }");
testNoException("async function* f() { let a = function(a = await) {}; }");
testNoException("async function* f(a = async function*() { await 1; }) {}");
// Async Function Definitions : AsyncFunctionDeclaration & AsyncFunctionExpression
// async function f() {}
// f = async function() {}
testAwaitInDefaultExprOfAsyncFunc("async function f(a = await) {}");
testAwaitInDefaultExprOfAsyncFunc("let f = async function(a = await) {}");
testAwaitInDefaultExprOfAsyncFunc("function f(a = async function(a = await) {}) {}");
testAwaitInDefaultExprOfAsyncFunc("function f() { a = async function(a = await) {}; }");
testAwaitInDefaultExprOfAsyncFunc("async function f() { a = async function(a = await) {}; }");
testNoException("async function f() { let a = function(a = await) {}; }");
testNoException("async function f(a = async function() { await 1; }) {}");
// Async Arrow Function Definitions : AsyncArrowFunction
// async () => {}
testAwaitInDefaultExprOfAsyncFunc("async (a = await) => {}");
testNoException("async (a = async () => { await 1; }) => {}");
reportCompare(true, true, summary);
}
|