Index: test/mjsunit/es6/spread-call-new-class.js |
diff --git a/test/mjsunit/es6/spread-call-new-class.js b/test/mjsunit/es6/spread-call-new-class.js |
index de88cff5d14f10ee13e9443d84c259a14100f8da..9ec8660918c32fbc7abf54a00aadb6f206a96db5 100644 |
--- a/test/mjsunit/es6/spread-call-new-class.js |
+++ b/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)); |
+})(); |