michael@0: // |reftest| skip-if(Android) michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: michael@0: /* michael@0: * Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/licenses/publicdomain/ michael@0: */ michael@0: michael@0: /* michael@0: * In strict mode code, 'let' and 'const' declarations may not bind michael@0: * 'eval' or 'arguments'. michael@0: */ michael@0: assertEq(testLenientAndStrict('let eval;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('let x,eval;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('let arguments;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('let x,arguments;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('const eval;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('const x,eval;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('const arguments;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('const x,arguments;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: michael@0: /* michael@0: * In strict mode code, 'let' declarations appearing in 'for' michael@0: * or 'for in' statements may not bind 'eval' or 'arguments'. michael@0: */ michael@0: assertEq(testLenientAndStrict('for (let eval in [])break;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('for (let [eval] in [])break;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('for (let {x:eval} in [])break;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('for (let arguments in [])break;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('for (let [arguments] in [])break;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: assertEq(testLenientAndStrict('for (let {x:arguments} in [])break;', michael@0: parsesSuccessfully, michael@0: parseRaisesException(SyntaxError)), michael@0: true); michael@0: michael@0: reportCompare(true, true);