| // Copyright (C) 2014 the V8 project authors. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| es6id: 14.1 |
| description: > |
| with new target |
| includes: [compareArray.js] |
| ---*/ |
| class Base { |
| constructor(...a) { |
| assert.sameValue( |
| arguments.length, |
| a.length, |
| "The value of `arguments.length` is `a.length`" |
| ); |
| this.base = a; |
| var args = []; |
| for (var i = 0; i < arguments.length; ++i) { |
| args.push(arguments[i]); |
| } |
| assert(compareArray(args, a), "`compareArray(args, a)` returns `true`"); |
| } |
| } |
| class Child extends Base { |
| constructor(...b) { |
| super(1, 2, 3); |
| assert.sameValue( |
| arguments.length, |
| b.length, |
| "The value of `arguments.length` is `b.length`" |
| ); |
| this.child = b; |
| var args = []; |
| for (var i = 0; i < arguments.length; ++i) { |
| args.push(arguments[i]); |
| } |
| assert(compareArray(args, b), "`compareArray(args, b)` returns `true`"); |
| } |
| } |
| |
| var c = new Child(1, 2, 3); |
| |
| assert.sameValue(c.child.length, 3, "The value of `c.child.length` is `3`"); |
| assert.sameValue(c.base.length, 3, "The value of `c.base.length` is `3`"); |
| |
| assert( |
| compareArray(c.child, [1, 2, 3]), |
| "`compareArray(c.child, [1, 2, 3])` returns `true`" |
| ); |
| assert( |
| compareArray(c.base, [1, 2, 3]), |
| "`compareArray(c.base, [1, 2, 3])` returns `true`" |
| ); |