v8/test/mjsunit/regress/regress-917988.js
Mythri fa844bdbee Set the correct scope when initializing parameters.
If the parameter list contains class declarations we should use the
block scope corresponding to the class when rewriting the initializers.

Bug: chromium:917988
Change-Id: I7fcd44a264b7c0113cbd821b759e0bee6c9345a0
Reviewed-on: https://chromium-review.googlesource.com/c/1392240
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58515}
2019-01-03 10:18:11 +00:00

32 lines
790 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.
// Tests if class declarations in parameter list are correctly handled.
function v_2(
v_3 = class v_4 {
get [[] = ';']() { }
}
) { }
v_2();
// Test object inside a class in a parameter list
(function f(
v_3 = class v_4 {
get [{} = ';']() { }
}
) { })();
// Test destructuring of class in parameters
(function f( {p, q} = class C { get [[] = ';']() {} } ) {})();
// Test array destructuring of class in parameters
class C {};
C[Symbol.iterator] = function() {
return {
next: function() { return { done: true }; },
_first: true
};
};
(function f1([p, q] = class D extends C { get [[]]() {} }) { })();