Source code
Revision control
Copy as Markdown
Other Tools
// 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);