diff options
Diffstat (limited to 'deps/v8/test/mjsunit/es6/spread-call-new-class.js')
-rw-r--r-- | deps/v8/test/mjsunit/es6/spread-call-new-class.js | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/es6/spread-call-new-class.js b/deps/v8/test/mjsunit/es6/spread-call-new-class.js index de88cff5d1..9ec8660918 100644 --- a/deps/v8/test/mjsunit/es6/spread-call-new-class.js +++ b/deps/v8/test/mjsunit/es6/spread-call-new-class.js @@ -88,3 +88,82 @@ assertEquals(["extra", 1, 2, 3], c.baseArgs); assertEquals([1, 2, 3], c.childArgs); })(); + +(function testArgumentsObjectStrict() { + "use strict"; + class Base { + constructor(...args) { + this.baseArgs = args; + } + method() { return this.baseArgs; } + } + + class Child extends Base { + constructor() { + super(...arguments); + this.childArgs = arguments; + } + } + + class Child2 extends Base { + constructor() { + super("extra", ...arguments); + this.childArgs = arguments; + } + } + + var c = new Child(...[1, 2, 3]); + assertInstanceof(c, Child); + assertInstanceof(c, Base); + assertEquals([1, 2, 3], c.method()); + assertEquals([1, 2, 3], c.baseArgs); + assertFalse(Array.__proto__ === c.childArgs.__proto__); + assertEquals([1, 2, 3], Array.prototype.slice.call(c.childArgs)); + + c = new Child2(...[1, 2, 3]); + assertInstanceof(c, Child2); + assertInstanceof(c, Base); + assertEquals(["extra", 1, 2, 3], c.method()); + assertEquals(["extra", 1, 2, 3], c.baseArgs); + assertFalse(Array.__proto__ === c.childArgs.__proto__); + assertEquals([1, 2, 3], Array.prototype.slice.call(c.childArgs)); +})(); + +(function testArgumentsObjectSloppy() { + class Base { + constructor(...args) { + this.baseArgs = args; + } + method() { return this.baseArgs; } + } + + class Child extends Base { + constructor() { + super(...arguments); + this.childArgs = arguments; + } + } + + class Child2 extends Base { + constructor() { + super("extra", ...arguments); + this.childArgs = arguments; + } + } + + var c = new Child(...[1, 2, 3]); + assertInstanceof(c, Child); + assertInstanceof(c, Base); + assertEquals([1, 2, 3], c.method()); + assertEquals([1, 2, 3], c.baseArgs); + assertFalse(Array.__proto__ === c.childArgs.__proto__); + assertEquals([1, 2, 3], Array.prototype.slice.call(c.childArgs)); + + c = new Child2(...[1, 2, 3]); + assertInstanceof(c, Child2); + assertInstanceof(c, Base); + assertEquals(["extra", 1, 2, 3], c.method()); + assertEquals(["extra", 1, 2, 3], c.baseArgs); + assertFalse(Array.__proto__ === c.childArgs.__proto__); + assertEquals([1, 2, 3], Array.prototype.slice.call(c.childArgs)); +})(); |