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);