mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-20 05:40:17 +08:00
* Compile Effect generators statically * test: declare the dormant array write's expected fence
22 lines
1.2 KiB
JavaScript
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); }
|