[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / big-int-addition-to-primitive.js
1 //@ runBigIntEnabled
2
3 function assert(a) {
4     if (!a)
5         throw new Error("Bad assertion");
6 }
7
8 assert.sameValue = function (input, expected, message) {
9     if (input !== expected)
10         throw new Error(message);
11 }
12
13 function testAdd(x, y, z) {
14     assert.sameValue(x + y, z, x + " + " + y + " = " + z);
15     assert.sameValue(y + x, z, y + " + " + x + " = " + z);
16 }
17
18 let o = {
19     [Symbol.toPrimitive]: function () { return 300000000000000n; }
20 }
21
22 testAdd(500000000000438n, o, 800000000000438n);
23
24 o.valueOf = function () {
25     throw new Error("Should never execute it");
26 };
27
28 testAdd(700000000000438n, o, 1000000000000438n);
29
30 o.toString = function () {
31     throw new Error("Should never execute it");
32 };
33
34 testAdd(700000000000438n, o, 1000000000000438n);
35
36 delete o.valueOf;
37
38 testAdd(700000000000438n, o, 1000000000000438n);
39