| // Copyright (C) 2017 Josh Wolfe. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| description: Bitwise NOT for BigInt object wrappers |
| esid: sec-bitwise-not-operator-runtime-semantics-evaluation |
| info: | |
| Runtime Semantics: Evaluation |
| UnaryExpression : ~ UnaryExpression |
| |
| 1. Let expr be the result of evaluating UnaryExpression. |
| 2. Let oldValue be ? ToNumeric(? GetValue(expr)). |
| 3. Let T be Type(oldValue). |
| 4. Return ? T::bitwiseNOT(oldValue). |
| |
| features: [BigInt, Symbol.toPrimitive] |
| ---*/ |
| assert.sameValue(~Object(1n), -2n, 'The value of ~Object(1n) is -2n'); |
| |
| function err() { |
| throw new Test262Error(); |
| } |
| |
| assert.sameValue(~{ |
| [Symbol.toPrimitive]: function() { |
| return 1n; |
| }, |
| |
| valueOf: err, |
| toString: err |
| }, -2n, 'The value of ~{[Symbol.toPrimitive]: function() {return 1n;}, valueOf: err, toString: err} is -2n'); |
| |
| assert.sameValue(~{ |
| valueOf: function() { |
| return 1n; |
| }, |
| |
| toString: err |
| }, -2n, 'The value of ~{valueOf: function() {return 1n;}, toString: err} is -2n'); |
| |
| assert.sameValue(~{ |
| toString: function() { |
| return 1n; |
| } |
| }, -2n, 'The value of ~{toString: function() {return 1n;}} is -2n'); |