| // 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-new-operator-runtime-semantics-evaluation |
| es6id: 12.3.3.1 |
| description: Value when invoked via NewExpression |
| info: | |
| NewExpression:newNewExpression |
| |
| 1. Return ? EvaluateNew(NewExpression, empty). |
| |
| MemberExpression:newMemberExpressionArguments |
| |
| 2. Return ? EvaluateNew(MemberExpression, Arguments). |
| |
| 12.3.3.1.1 Runtime Semantics: EvaluateNew |
| |
| [...] |
| 8. Return ? Construct(constructor, argList). |
| |
| 7.3.13 Construct (F [ , argumentsList [ , newTarget ]]) |
| |
| 1. If newTarget was not passed, let newTarget be F. |
| features: [new.target] |
| ---*/ |
| |
| var newTarget = null; |
| function f() { |
| newTarget = new.target; |
| } |
| |
| new f; |
| |
| assert.sameValue(newTarget, f, 'Invoked without Arguments'); |
| |
| newTarget = null; |
| |
| new f(); |
| |
| assert.sameValue(newTarget, f, 'Invoked with Arguments'); |