diff options
Diffstat (limited to 'deps/v8/test/mjsunit/es6/super-with-spread-modify-array-iterator.js')
-rw-r--r-- | deps/v8/test/mjsunit/es6/super-with-spread-modify-array-iterator.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/es6/super-with-spread-modify-array-iterator.js b/deps/v8/test/mjsunit/es6/super-with-spread-modify-array-iterator.js new file mode 100644 index 0000000000..70ce9ca159 --- /dev/null +++ b/deps/v8/test/mjsunit/es6/super-with-spread-modify-array-iterator.js @@ -0,0 +1,51 @@ +// Copyright 2017 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 + +(function modifyArrayIterator() { + 'use strict'; + + class Point { + constructor(x, y) { + this.x = x; + this.y = y; + } + } + + class RestPoint extends Point { + constructor(...args) { + super(...args); + } + } + + function testRestPoint(x, y) { + return new RestPoint(x, y); + } + testRestPoint(1, 2); + testRestPoint(1, 2); + % OptimizeFunctionOnNextCall(testRestPoint); + var r = testRestPoint(1, 2); + + assertInstanceof(r, RestPoint); + assertInstanceof(r, Point); + assertEquals(1, r.x); + assertEquals(2, r.y); + + Object.defineProperty(Array.prototype, Symbol.iterator, { + value: function* + () { + yield 3; + yield 4; + }, + configurable: true + }); + + var r2 = testRestPoint(1, 2); + + assertInstanceof(r2, RestPoint); + assertInstanceof(r2, Point); + assertEquals(3, r2.x); + assertEquals(4, r2.y); +})(); |