// Copyright (C) 2017 Robin Templeton. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- description: BigInt modulo 0 throws a range error esid: sec-multiplicative-operators-runtime-semantics-evaluation info: | Runtime Semantics: Evaluation MultiplicativeExpression: MultiplicativeExpression MultiplicativeOperator ExponentiationExpression ... 12. Otherwise, MultiplicativeOperator is %; return T::remainder(lnum, rnum). ... BigInt::remainder (x, y) 1. If y is 0n, throw a RangeError exception. 2. Return the BigInt representing x modulo y. features: [BigInt] ---*/ assert.throws(RangeError, function() { 1n % 0n; }, '1n % 0n throws RangeError'); assert.throws(RangeError, function() { 10n % 0n; }, '10n % 0n throws RangeError'); assert.throws(RangeError, function() { 0n % 0n; }, '0n % 0n throws RangeError'); assert.throws(RangeError, function() { 1000000000000000000n % 0n; }, '1000000000000000000n % 0n throws RangeError'); reportCompare(0, 0);