dde5e3a134
This changes how rewind upon preparser abort works. It now rewinds to the start of the parameter scope. In the case of "function X(" it is before the "(". In the case of arrow functions it's before the start of the arrow function. This allows us to reparse the arrow function from the start so all parameters are declared properly. Bug: v8:2728, v8:7390 Change-Id: I1c40056a49ec198560e63cd73949a59221ee0401 Reviewed-on: https://chromium-review.googlesource.com/c/1382736 Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#58332}
18 lines
466 B
JavaScript
18 lines
466 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.
|
|
|
|
// Flags: --allow-natives-syntax --enable-slow-asserts --expose-gc
|
|
|
|
class Derived extends Array {
|
|
constructor(a) { throw "error" }
|
|
}
|
|
|
|
// Derived is not a subclass of RegExp
|
|
let o = Reflect.construct(RegExp, [], Derived);
|
|
o.lastIndex = 0x1234;
|
|
%HeapObjectVerify(o);
|
|
|
|
gc();
|
|
%HeapObjectVerify(o);
|