| // Copyright (C) 2016 The V8 Project authors. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| |
| /*--- |
| es6id: 20.1.1.1 |
| esid: sec-number-constructor-number-value |
| description: > |
| Return abrupt from ToNumber(value) |
| info: | |
| Number ( value ) |
| |
| 1. If no arguments were passed to this function invocation, let n be +0. |
| 2. Else, let n be ? ToNumber(value). |
| [...] |
| ---*/ |
| |
| var obj1 = { |
| valueOf: function() { |
| throw new Test262Error(); |
| } |
| }; |
| |
| var obj2 = { |
| toString: function() { |
| throw new Test262Error(); |
| } |
| }; |
| |
| assert.throws(Test262Error, function() { |
| Number(obj1); |
| }, "NewTarget is undefined, {}.valueOf"); |
| |
| assert.throws(Test262Error, function() { |
| Number(obj2); |
| }, "NewTarget is undefined, {}.toString"); |
| |
| assert.throws(Test262Error, function() { |
| new Number(obj1); |
| }, "NewTarget is defined, {}.valueOf"); |
| |
| assert.throws(Test262Error, function() { |
| new Number(obj2); |
| }, "NewTarget is defined, {}.toString"); |