// Copyright (C) 2017 Josh Wolfe. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
description: Postfix increment for references to BigInt values
esid: sec-postfix-increment-operator-runtime-semantics-evaluation
info: |
  1. Let expr be the result of evaluating UnaryExpression.
  2. Let oldValue be ? ToNumeric(? GetValue(expr)).
  3. Let newValue be ? Type(oldvalue)::add(oldValue, Type(oldValue)::unit).
  4. Perform ? PutValue(expr, newValue).
  5. Return oldValue. 

features: [BigInt]
---*/

var x = 0n;
assert.sameValue(x++, 0n, "var x = 0n; x++ === 0n");
assert.sameValue(x, 1n, "var x = 0n; x++; x === 1n");

var x = -1n;
assert.sameValue(x++, -1n, "var x = -1n; x++ === -1n");
assert.sameValue(x, 0n, "var x = -1n; x++; x === 0n");

var x = 123456n;
assert.sameValue(x++, 123456n, "var x = 123456n; x++ === 123456n");
assert.sameValue(x, 123457n, "var x = 123456n; x++; x === 123457n");

var x = -123457n;
assert.sameValue(x++, -123457n, "var x = -123457n; x++ === -123457n");
assert.sameValue(x, -123456n, "var x = -123457n; x++; x === -123456n");

var x = 0x1fffffffffffff00n;
assert.sameValue(x++, 0x1fffffffffffff00n, "var x = 0x1fffffffffffff00n; x++ === 0x1fffffffffffff00n");
assert.sameValue(x, 0x1fffffffffffff01n, "var x = 0x1fffffffffffff00n; x++; x === 0x1fffffffffffff01n");

var x = -0x1fffffffffffff01n;
assert.sameValue(x++, -0x1fffffffffffff01n, "var x = -0x1fffffffffffff01n; x++ === -0x1fffffffffffff01n");
assert.sameValue(x, -0x1fffffffffffff00n, "var x = -0x1fffffffffffff01n; x++; x === -0x1fffffffffffff00n");

var x = {y:0n};
assert.sameValue(x.y++, 0n, "var x = {y:0n}; x.y++ === 0n");
assert.sameValue(x.y, 1n, "var x = {y:0n}; x.y++; x.y === 1n");

var x = {y:{z:0n}};
assert.sameValue(x.y.z++, 0n, "var x = {y:{z:0n}}; x.y.z++ === 0n");
assert.sameValue(x.y.z, 1n, "var x = {y:{z:0n}}; x.y.z++; x.y.z === 1n");

var x = [0n];
assert.sameValue(x[0]++, 0n, "var x = [0n]; x[0]++ === 0n");
assert.sameValue(x[0], 1n, "var x = [0n]; x[0]++; x[0] === 1n");

var x = [null, [null, null, 0n]];
assert.sameValue(x[1][2]++, 0n, "var x = [null, [null, null, 0n]]; x[1][2]++ === 0n");
assert.sameValue(x[1][2], 1n, "var x = [null, [null, null, 0n]]; x[1][2]++; x[1][2] === 1n");

var x = {y:[0n]};
assert.sameValue(x.y[0]++, 0n, "var x = {y:[0n]}; x.y[0]++ === 0n");
assert.sameValue(x.y[0], 1n, "var x = {y:[0n]}; x.y[0]++; x.y[0] === 1n");

var x = [{z:0n}];
assert.sameValue(x[0].z++, 0n, "var x = [{z:0n}]; x[0].z++ === 0n");
assert.sameValue(x[0].z, 1n, "var x = [{z:0n}]; x[0].z++; x[0].z === 1n");
