a5f559c3f8
- Directly declares the special catch variable from the parser-base. - Tracks Scope on PreParserBlock and finds conflicting lexical declarations by simply walking the VariableMap of the block inserted for the pattern; or the catch variable in case of identifier. - This also enables throwing errors for duplicate let in the preparser. We may have to back that out if it breaks something. Bug: v8:2728, v8:7828 Change-Id: Id2eea62062533eb99cd6670c42a4b1da87139008 Reviewed-on: https://chromium-review.googlesource.com/c/1382095 Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#58353}
25 lines
437 B
JavaScript
25 lines
437 B
JavaScript
// Copyright 2018 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.
|
|
|
|
function f1() {
|
|
let y = 200;
|
|
try {
|
|
throw {}
|
|
} catch ({x=()=>y, y=300}) {
|
|
return x()
|
|
}
|
|
}
|
|
assertEquals(300, f1());
|
|
|
|
function f2() {
|
|
let y = 200;
|
|
try {
|
|
throw {}
|
|
} catch ({x=()=>y}) {
|
|
let y = 300;
|
|
return x()
|
|
}
|
|
}
|
|
assertEquals(200, f2());
|