Files
scriptc/tests/corpus/checked-numeric-arithmetic.js
Chris Tate c257368c5e Compile Effect generators statically (#589)
* Compile Effect generators statically

* test: declare the dormant array write's expected fence
2026-09-30 14:25:29 -05:00

22 lines
1.2 KiB
JavaScript

function subtract(a, b) { return a - b; }
function multiply(a, b) { return a * b; }
function divide(a, b) { return a / b; }
function remainder(a, b) { return a % b; }
function power(a, b) { return a ** b; }
console.log(subtract(12, 5), subtract(12n, 5n), subtract("12", true));
console.log(multiply(12, 5), multiply(12n, 5n), multiply(null, 5));
console.log(divide(12, 5), divide(12n, 5n), divide("12", 4));
console.log(remainder(12, 5), remainder(12n, 5n), remainder(-12, 5));
console.log(power(2, 5), power(2n, 5n), power(1, Infinity), power(-1, NaN));
console.log(1 / divide(-0, 1), Number.isNaN(subtract(undefined, 1)));
let order = "";
const left = { valueOf() { order += "L"; return 9n; } };
const right = { valueOf() { order += "R"; return 2n; } };
console.log(subtract(left, right), order);
for (const fn of [subtract, multiply, divide, remainder, power]) {
try { fn(1n, 1); } catch (error) { console.log(error.name, error.message); }
}
try { divide(1n, 0n); } catch (error) { console.log(error.name, error.message); }
try { remainder(1n, 0n); } catch (error) { console.log(error.name, error.message); }
try { power(1n, -1n); } catch (error) { console.log(error.name, error.message); }