| // Copyright 2014 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flags: --no-harmony-sloppy-let --no-harmony-sloppy-function |
| // Flags: --no-harmony-sloppy |
| |
| function CheckError(source) { |
| var exception = null; |
| try { |
| eval(source); |
| } catch (e) { |
| exception = e; |
| } |
| assertNotNull(exception); |
| assertEquals( |
| "Block-scoped declarations (let, const, function, class) not yet supported outside strict mode", |
| exception.message); |
| } |
| |
| |
| function CheckOk(source) { |
| eval(source); |
| } |
| |
| CheckError("let x = 1;"); |
| CheckError("{ let x = 1; }"); |
| CheckError("function f() { let x = 1; }"); |
| CheckError("for (let x = 1; x < 1; x++) {}"); |
| CheckError("for (let x of []) {}"); |
| CheckError("for (let x in []) {}"); |
| CheckError("class C {}"); |
| CheckError("class C extends Array {}"); |
| CheckError("(class {});"); |
| CheckError("(class extends Array {});"); |
| CheckError("(class C {});"); |
| CheckError("(class C exends Array {});"); |
| |
| CheckOk("let = 1;"); |
| CheckOk("{ let = 1; }"); |
| CheckOk("function f() { let = 1; }"); |
| CheckOk("for (let = 1; let < 1; let++) {}"); |