tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

bigint-errors.js (2110B)


      1 // Copyright (C) 2017 Josh Wolfe. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 /*---
      4 description: unsigned-right-shift operator ToNumeric with BigInt operands
      5 esid: sec-unsigned-right-shift-operator-runtime-semantics-evaluation
      6 info: After ToNumeric type coercion, unsigned-right-shift always throws for BigInt operands
      7 features: [BigInt, Symbol, Symbol.toPrimitive, computed-property-names]
      8 ---*/
      9 assert.throws(TypeError, function() {
     10  Symbol('1') >>> 0n;
     11 }, 'Symbol("1") >>> 0n throws TypeError');
     12 
     13 assert.throws(TypeError, function() {
     14  0n >>> Symbol('1');
     15 }, '0n >>> Symbol("1") throws TypeError');
     16 
     17 assert.throws(TypeError, function() {
     18  Object(Symbol('1')) >>> 0n;
     19 }, 'Object(Symbol("1")) >>> 0n throws TypeError');
     20 
     21 assert.throws(TypeError, function() {
     22  0n >>> Object(Symbol('1'));
     23 }, '0n >>> Object(Symbol("1")) throws TypeError');
     24 
     25 assert.throws(TypeError, function() {
     26  ({
     27    [Symbol.toPrimitive]: function() {
     28      return Symbol('1');
     29    }
     30  }) >>> 0n;
     31 }, '({[Symbol.toPrimitive]: function() {return Symbol("1");}}) >>> 0n throws TypeError');
     32 
     33 assert.throws(TypeError, function() {
     34  0n >>> {
     35    [Symbol.toPrimitive]: function() {
     36      return Symbol('1');
     37    }
     38  };
     39 }, '0n >>> {[Symbol.toPrimitive]: function() {return Symbol("1");}} throws TypeError');
     40 
     41 assert.throws(TypeError, function() {
     42  ({
     43    valueOf: function() {
     44      return Symbol('1');
     45    }
     46  }) >>> 0n;
     47 }, '({valueOf: function() {return Symbol("1");}}) >>> 0n throws TypeError');
     48 
     49 assert.throws(TypeError, function() {
     50  0n >>> {
     51    valueOf: function() {
     52      return Symbol('1');
     53    }
     54  };
     55 }, '0n >>> {valueOf: function() {return Symbol("1");}} throws TypeError');
     56 
     57 assert.throws(TypeError, function() {
     58  ({
     59    toString: function() {
     60      return Symbol('1');
     61    }
     62  }) >>> 0n;
     63 }, '({toString: function() {return Symbol("1");}}) >>> 0n throws TypeError');
     64 
     65 assert.throws(TypeError, function() {
     66  0n >>> {
     67    toString: function() {
     68      return Symbol('1');
     69    }
     70  };
     71 }, '0n >>> {toString: function() {return Symbol("1");}} throws TypeError');
     72 
     73 reportCompare(0, 0);