6c6dd449c3
This fixes a corner-case in redeclaration handling, where the ES2015 early error case got mixed up with legacy const handling in the parser. Redeclaration using ES2015 'let' and 'const' should be early errors, but legacy 'const' redeclaration has historically been a runtime error, and should stay that way until legacy 'const' is gone. The fix here is uglier than it might be due to https://code.google.com/p/v8/issues/detail?id=4577, which keeps us from simplifying the mess of if/else-if in the current code. BUG=v8:4576 LOG=n Review URL: https://codereview.chromium.org/1485943002 Cr-Commit-Position: refs/heads/master@{#32429}
13 lines
335 B
JavaScript
13 lines
335 B
JavaScript
// Copyright 2015 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: --harmony-sloppy --legacy-const
|
|
|
|
// Should trigger a runtime error, not an early error.
|
|
function f() {
|
|
const x;
|
|
var x;
|
|
}
|
|
assertThrows(f, SyntaxError);
|