Chromium Code Reviews| Index: test/mjsunit/harmony/spread-call-new-class.js |
| diff --git a/test/mjsunit/harmony/spread-call-new-class.js b/test/mjsunit/harmony/spread-call-new-class.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3b1e523eda2f3c86c09dc6420ef69de50439f9eb |
| --- /dev/null |
| +++ b/test/mjsunit/harmony/spread-call-new-class.js |
| @@ -0,0 +1,65 @@ |
| +// Copyright 2014 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: --harmony-spreadcalls --harmony-sloppy --harmony-classes |
|
arv (Not doing code reviews)
2015/03/30 22:19:49
--harmony-classes can be removed
|
| +// Flags: --harmony-rest-parameters |
| + |
| + |
| +(function testConstructClassStrict() { |
| + "use strict"; |
| + class Base { |
| + constructor(...args) { |
| + this.baseArgs = args; |
| + } |
| + method() { return this.baseArgs; } |
| + } |
| + |
| + class Child extends Base { |
| + constructor(...args) { |
| + super(...args); |
|
arv (Not doing code reviews)
2015/03/30 22:19:49
Maybe also add a case with `super(x, ...y)`
arv (Not doing code reviews)
2015/03/30 22:19:49
Awesome!
caitp (gmail)
2015/03/30 22:38:12
Acknowledged.
|
| + this.childArgs = args; |
| + } |
| + } |
| + |
| + var c = new Base(...[1, 2, 3]); |
| + assertInstanceof(c, Base); |
| + assertEquals([1, 2, 3], c.method()); |
| + assertEquals([1, 2, 3], c.baseArgs); |
| + |
| + c = new Child(...[1, 2, 3]); |
| + assertInstanceof(c, Child); |
| + assertInstanceof(c, Base); |
| + assertEquals([1, 2, 3], c.method()); |
| + assertEquals([1, 2, 3], c.baseArgs); |
| + assertEquals([1, 2, 3], c.childArgs); |
| +})(); |
| + |
| + |
| +(function testConstructSloppy() { |
| + class Base { |
| + constructor(...args) { |
| + this.baseArgs = args; |
| + } |
| + method() { return this.baseArgs; } |
| + } |
| + |
| + class Child extends Base { |
| + constructor(...args) { |
| + super(...args); |
| + this.childArgs = args; |
| + } |
| + } |
| + |
| + var c = new Base(...[1, 2, 3]); |
| + assertInstanceof(c, Base); |
| + assertEquals([1, 2, 3], c.method()); |
| + assertEquals([1, 2, 3], c.baseArgs); |
| + |
| + c = new Child(...[1, 2, 3]); |
| + assertInstanceof(c, Child); |
| + assertInstanceof(c, Base); |
| + assertEquals([1, 2, 3], c.method()); |
| + assertEquals([1, 2, 3], c.baseArgs); |
| + assertEquals([1, 2, 3], c.childArgs); |
| +})(); |