summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/Function/prototype/bind/instance-construct-newtarget-self-reflect.js
blob: 878eb0942ef98b5a1d79cb6854aa11b3edddf740 (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
description: >
  The NewTarget value is changed to the target function when the bound function
  object is constructed using Reflect.construct and the bound function is
  specified as the NewTarget value
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, [], C);

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

reportCompare(0, 0);