bigint-errors.js (1978B)
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: left-shift operator ToNumeric with BigInt operands 5 esid: sec-left-shift-operator-runtime-semantics-evaluation 6 features: [BigInt, Symbol, Symbol.toPrimitive, computed-property-names] 7 ---*/ 8 assert.throws(TypeError, function() { 9 Symbol('1') << 0n; 10 }, 'Symbol("1") << 0n throws TypeError'); 11 12 assert.throws(TypeError, function() { 13 0n << Symbol('1'); 14 }, '0n << Symbol("1") throws TypeError'); 15 16 assert.throws(TypeError, function() { 17 Object(Symbol('1')) << 0n; 18 }, 'Object(Symbol("1")) << 0n throws TypeError'); 19 20 assert.throws(TypeError, function() { 21 0n << Object(Symbol('1')); 22 }, '0n << Object(Symbol("1")) throws TypeError'); 23 24 assert.throws(TypeError, function() { 25 ({ 26 [Symbol.toPrimitive]: function() { 27 return Symbol('1'); 28 } 29 }) << 0n; 30 }, '({[Symbol.toPrimitive]: function() {return Symbol("1");}}) << 0n throws TypeError'); 31 32 assert.throws(TypeError, function() { 33 0n << { 34 [Symbol.toPrimitive]: function() { 35 return Symbol('1'); 36 } 37 }; 38 }, '0n << {[Symbol.toPrimitive]: function() {return Symbol("1");}} throws TypeError'); 39 40 assert.throws(TypeError, function() { 41 ({ 42 valueOf: function() { 43 return Symbol('1'); 44 } 45 }) << 0n; 46 }, '({valueOf: function() {return Symbol("1");}}) << 0n throws TypeError'); 47 48 assert.throws(TypeError, function() { 49 0n << { 50 valueOf: function() { 51 return Symbol('1'); 52 } 53 }; 54 }, '0n << {valueOf: function() {return Symbol("1");}} throws TypeError'); 55 56 assert.throws(TypeError, function() { 57 ({ 58 toString: function() { 59 return Symbol('1'); 60 } 61 }) << 0n; 62 }, '({toString: function() {return Symbol("1");}}) << 0n throws TypeError'); 63 64 assert.throws(TypeError, function() { 65 0n << { 66 toString: function() { 67 return Symbol('1'); 68 } 69 }; 70 }, '0n << {toString: function() {return Symbol("1");}} throws TypeError'); 71 72 reportCompare(0, 0);