| // Copyright (C) 2017 Robin Templeton. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| description: If the BigInt exponent is < 0, throw a RangeError exception |
| esid: sec-exp-operator-runtime-semantics-evaluation |
| info: | |
| ExponentiationExpression: UpdateExpression ** ExponentiationExpression |
| |
| ... |
| 9. Return ? Type(base)::exponentiate(base, exponent). |
| |
| BigInt::exponentiate (base, exponent) |
| |
| 1. If exponent < 0, throw a RangeError exception. |
| ... |
| features: [BigInt] |
| ---*/ |
| assert.throws(RangeError, function() { |
| 1n ** -1n; |
| }, '1n ** -1n throws RangeError'); |
| |
| assert.throws(RangeError, function() { |
| 0n ** -1n; |
| }, '0n ** -1n throws RangeError'); |
| |
| assert.throws(RangeError, function() { |
| (-1n) ** -1n; |
| }, '(-1n) ** -1n throws RangeError'); |
| |
| assert.throws(RangeError, function() { |
| 1n ** -100000000000000000n; |
| }, '1n ** -100000000000000000n throws RangeError'); |