From 2aa4a82499d4becd2284cdb482213d541b8804dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 16:29:10 +0200 Subject: Adding upstream version 86.0.1. Signed-off-by: Daniel Baumann --- .../expressions/left-shift/bigint-non-primitive.js | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 js/src/tests/test262/language/expressions/left-shift/bigint-non-primitive.js (limited to 'js/src/tests/test262/language/expressions/left-shift/bigint-non-primitive.js') diff --git a/js/src/tests/test262/language/expressions/left-shift/bigint-non-primitive.js b/js/src/tests/test262/language/expressions/left-shift/bigint-non-primitive.js new file mode 100644 index 0000000000..2ecd5f2c0e --- /dev/null +++ b/js/src/tests/test262/language/expressions/left-shift/bigint-non-primitive.js @@ -0,0 +1,89 @@ +// Copyright (C) 2017 Josh Wolfe. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: Left shift for non-primitive BigInt values +esid: sec-left-shift-operator-runtime-semantics-evaluation +info: | + ShiftExpression : ShiftExpression << AdditiveExpression + + 1. Let lref be the result of evaluating ShiftExpression. + 2. Let lval be ? GetValue(lref). + 3. Let rref be the result of evaluating AdditiveExpression. + 4. Let rval be ? GetValue(rref). + 5. Let lnum be ? ToNumeric(lval). + 6. Let rnum be ? ToNumeric(rval). + 7. If Type(lnum) does not equal Type(rnum), throw a TypeError exception. + 8. Let T be Type(lnum). + 9. Return T::leftShift(lnum, rnum). + +features: [BigInt, Symbol.toPrimitive] +---*/ +assert.sameValue(Object(0b101n) << 1n, 0b1010n, 'The result of (Object(0b101n) << 1n) is 0b1010n'); + +assert.sameValue( + Object(0b101n) << Object(1n), + 0b1010n, + 'The result of (Object(0b101n) << Object(1n)) is 0b1010n' +); + +function err() { + throw new Test262Error(); +} + +assert.sameValue({ + [Symbol.toPrimitive]: function() { + return 0b101n; + }, + + valueOf: err, + toString: err +} << 1n, 0b1010n, 'The result of (({[Symbol.toPrimitive]: function() {return 0b101n;}, valueOf: err, toString: err}) << 1n) is 0b1010n'); + +assert.sameValue({ + valueOf: function() { + return 0b101n; + }, + + toString: err +} << 1n, 0b1010n, 'The result of (({valueOf: function() {return 0b101n;}, toString: err}) << 1n) is 0b1010n'); + +assert.sameValue({ + toString: function() { + return 0b101n; + } +} << 1n, 0b1010n, 'The result of (({toString: function() {return 0b101n;}}) << 1n) is 0b1010n'); + +assert.sameValue(0b101n << { + [Symbol.toPrimitive]: function() { + return 1n; + }, + + valueOf: err, + toString: err +}, 0b1010n, 'The result of (0b101n << {[Symbol.toPrimitive]: function() {return 1n;}, valueOf: err, toString: err}) is 0b1010n'); + +assert.sameValue(0b101n << { + valueOf: function() { + return 1n; + }, + + toString: err +}, 0b1010n, 'The result of (0b101n << {valueOf: function() {return 1n;}, toString: err}) is 0b1010n'); + +assert.sameValue(0b101n << { + toString: function() { + return 1n; + } +}, 0b1010n, 'The result of (0b101n << {toString: function() {return 1n;}}) is 0b1010n'); + +assert.sameValue({ + valueOf: function() { + return 0b101n; + } +} << { + valueOf: function() { + return 1n; + } +}, 0b1010n, 'The result of (({valueOf: function() {return 0b101n;}}) << {valueOf: function() {return 1n;}}) is 0b1010n'); + +reportCompare(0, 0); -- cgit v1.2.3