2017-10-12 22:55:22 +02:00
// Copyright (C) 2017 Josh Wolfe. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/ * - - -
description : Unary minus for BigInt object wrappers
esid : sec - unary - minus - 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 : : unaryMinus ( oldValue ) .
features : [ BigInt , Symbol . toPrimitive ]
-- - * /
2018-05-09 23:14:09 +02:00
assert . sameValue ( - Object ( 1 n ) , - 1 n , 'The value of -Object(1n) is -1n' ) ;
assert . notSameValue ( - Object ( 1 n ) , 1 n , 'The value of -Object(1n) is not 1n' ) ;
assert . notSameValue ( - Object ( 1 n ) , Object ( - 1 n ) , 'The value of -Object(1n) is not Object(-1n)' ) ;
assert . sameValue ( - Object ( - 1 n ) , 1 n , 'The value of -Object(-1n) is 1n' ) ;
assert . notSameValue ( - Object ( - 1 n ) , - 1 n , 'The value of -Object(-1n) is not -1n' ) ;
assert . notSameValue ( - Object ( - 1 n ) , Object ( 1 n ) , 'The value of -Object(-1n) is not Object(1n)' ) ;
assert . sameValue ( - {
[ Symbol . toPrimitive ] : function ( ) {
return 1 n ;
} ,
valueOf : function ( ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( ) ;
2018-05-09 23:14:09 +02:00
} ,
toString : function ( ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( ) ;
2018-05-09 23:14:09 +02:00
}
2021-07-28 22:48:39 +02:00
} , - 1 n , 'The value of -{[Symbol.toPrimitive]: function() {return 1n;}, valueOf: function() {throw new Test262Error();}, toString: function() {throw new Test262Error();}} is -1n' ) ;
2018-05-09 23:14:09 +02:00
assert . sameValue ( - {
valueOf : function ( ) {
return 1 n ;
} ,
toString : function ( ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( ) ;
2018-05-09 23:14:09 +02:00
}
2021-07-28 22:48:39 +02:00
} , - 1 n , 'The value of -{valueOf: function() {return 1n;}, toString: function() {throw new Test262Error();}} is -1n' ) ;
2017-10-12 22:55:22 +02:00
2018-05-09 23:14:09 +02:00
assert . sameValue ( - {
toString : function ( ) {
return 1 n ;
}
2019-11-11 05:11:18 +01:00
} , - 1 n , 'The value of -{toString: function() {return 1n;}} is -1n' ) ;