1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
4 * Any copyright is dedicated to the Public Domain.
5 * http://creativecommons.org/licenses/publicdomain/
9 * In strict mode code, 'let' and 'const' declarations may not bind
10 * 'eval' or 'arguments'.
12 assertEq(testLenientAndStrict('let eval;',
14 parseRaisesException(SyntaxError)),
16 assertEq(testLenientAndStrict('let x,eval;',
18 parseRaisesException(SyntaxError)),
20 assertEq(testLenientAndStrict('let arguments;',
22 parseRaisesException(SyntaxError)),
24 assertEq(testLenientAndStrict('let x,arguments;',
26 parseRaisesException(SyntaxError)),
28 assertEq(testLenientAndStrict('const eval;',
30 parseRaisesException(SyntaxError)),
32 assertEq(testLenientAndStrict('const x,eval;',
34 parseRaisesException(SyntaxError)),
36 assertEq(testLenientAndStrict('const arguments;',
38 parseRaisesException(SyntaxError)),
40 assertEq(testLenientAndStrict('const x,arguments;',
42 parseRaisesException(SyntaxError)),
46 * In strict mode code, 'let' declarations appearing in 'for'
47 * or 'for in' statements may not bind 'eval' or 'arguments'.
49 assertEq(testLenientAndStrict('for (let eval in [])break;',
51 parseRaisesException(SyntaxError)),
53 assertEq(testLenientAndStrict('for (let [eval] in [])break;',
55 parseRaisesException(SyntaxError)),
57 assertEq(testLenientAndStrict('for (let {x:eval} in [])break;',
59 parseRaisesException(SyntaxError)),
61 assertEq(testLenientAndStrict('for (let arguments in [])break;',
63 parseRaisesException(SyntaxError)),
65 assertEq(testLenientAndStrict('for (let [arguments] in [])break;',
67 parseRaisesException(SyntaxError)),
69 assertEq(testLenientAndStrict('for (let {x:arguments} in [])break;',
71 parseRaisesException(SyntaxError)),
74 reportCompare(true, true);