blob: e09f0d3d93d40b8572ee97c2ab801a33364092df (
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
|
// |reftest| skip-if(!xulRuntime.shell) -- needs getBuildConfiguration
// Any copyright is dedicated to the Public Domain.
// http://creativecommons.org/licenses/publicdomain/
//-----------------------------------------------------------------------------
var BUGNUMBER = 1416337;
var summary =
"Expression closure syntax is only permitted for functions that constitute " +
"entire AssignmentExpressions, not PrimaryExpressions that are themselves " +
"components of larger binary expressions";
print(BUGNUMBER + ": " + summary);
/**************
* BEGIN TEST *
**************/
if (getBuildConfiguration().release_or_beta)
{
function assertThrowsSyntaxError(code)
{
function testOne(replacement)
{
var x, rv;
try
{
rv = eval(code.replace("@@@", replacement));
}
catch (e)
{
assertEq(e instanceof SyntaxError, true,
"should have thrown a SyntaxError, instead got: " + e);
return;
}
assertEq(true, false, "should have thrown, instead returned " + rv);
}
testOne("function");
testOne("async function");
}
assertThrowsSyntaxError("x = ++@@@() 1");
assertThrowsSyntaxError("x = delete @@@() 1");
assertThrowsSyntaxError("x = new @@@() 1");
assertThrowsSyntaxError("x = void @@@() 1");
assertThrowsSyntaxError("x = +@@@() 1");
assertThrowsSyntaxError("x = 1 + @@@() 1");
assertThrowsSyntaxError("x = null != @@@() 1");
assertThrowsSyntaxError("x = null != @@@() 0 ? 1 : a => {}");
assertThrowsSyntaxError("x = @@@() 0 ? 1 : a => {} !== null");
assertThrowsSyntaxError("x = @@@() 0 ? 1 : a => {}.toString");
assertThrowsSyntaxError("x = @@@() 0 ? 1 : a => {}['toString']");
assertThrowsSyntaxError("x = @@@() 0 ? 1 : a => {}``");
assertThrowsSyntaxError("x = @@@() 0 ? 1 : a => {}()");
assertThrowsSyntaxError("x = @@@() 0 ? 1 : a => {}++");
assertThrowsSyntaxError("x = @@@() 0 ? 1 : a => {} || 0");
assertThrowsSyntaxError("x = 0 || @@@() 0 ? 1 : a => {}");
assertThrowsSyntaxError("x = @@@() 0 ? 1 : a => {} && true");
assertThrowsSyntaxError("x = true && @@@() 0 ? 1 : a => {}");
}
if (typeof reportCompare === "function")
reportCompare(true, true);
|