summaryrefslogtreecommitdiff
path: root/test/built-ins/Function/prototype/bind/instance-construct-newtarget-boundtarget-bound.js
blob: 465b4664ecf5b937401502c656a840da3ec81c8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-bound-function-exotic-objects-construct-argumentslist-newtarget
es6id: 9.4.1.2
description: >
  The NewTarget value is changed to the target function when the bound function
  object is constructed using Reflect.construct and the "bound target" is
  specified as the NewTarget value (and the bound target is itself a bound
  function)
info: |
  [...]
  5. If SameValue(F, newTarget) is true, let newTarget be target.
  6. Return ? Construct(target, args, newTarget). 
features: [Reflect, new.target]
---*/

var newTarget;
function A() {
  newTarget = new.target;
}
var B = A.bind();
var C = B.bind();

var c = Reflect.construct(C, [], B);

assert.sameValue(newTarget, A);
assert.sameValue(Object.getPrototypeOf(c), A.prototype);