Files
hawk/t/h-023.hawk
hyung-hwan 479b74d1a3
All checks were successful
continuous-integration/drone/push Build is passing
updated parse_unary to fold more consistent constant folding
2026-03-22 17:16:26 +09:00

125 lines
3.2 KiB
Plaintext

@pragma entry main
@pragma implicit off
@include "tap.inc";
@global g_calls = 0;
function tick (v)
{
g_calls = g_calls + 1;
return v;
}
function main ()
{
@local i, j, k, l, m, n, o, p, q, r;
i = 0;
j = 0;
k = 0;
l = 0;
m = 0;
n = 0;
o = 0;
p = 0;
q = 0;
r = 0;
while (0) { i = i + 1; }
while (@false) { j = j + 1; }
while ((0)) { k = k + 1; }
while ((@false)) { l = l + 1; }
tap_ensure(i, 0, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(j, 0, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(k, 0, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(l, 0, @SCRIPTNAME, @SCRIPTLINE);
if ((1, 0))
m = 1;
else
m = 2;
if (((0, "", 5)))
n = 1;
else
n = 2;
if (((1, 2, @false)))
o = 1;
else
o = 2;
if ((((1, 2), (3, 4), 0)))
p = 1;
else
p = 2;
while ((1, 0)) { q = q + 1; }
while ((((1, 2), (3, 4), 0))) { r = r + 1; }
tap_ensure(m, 2, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(n, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(o, 2, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(p, 2, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(q, 0, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(r, 0, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(2 ^ 10, 1024, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(2 ^ -3, 0.125, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(7.5 \ 2, 3, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(8.5 / 2, 4.25, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(17 % 5, 2, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(17.5 % 5, 2.5, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(6 & 3, 2, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(6 ^^ 3, 5, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(6 | 3, 7, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(3 << 4, 48, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(48 >> 4, 3, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(6.9 & 3, 2, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(8 >> 1.9, 4, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(2 == 2.0, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(2 != 2.0, 0, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(2 < 2.5, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(2.5 >= 2, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(2 === 2.0, 0, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(2 !== 2.0, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(!@true === @false, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(!@false === @true, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(!@nil === @true, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(!"" === @true, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(!"x" === @false, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(!@b"" === @true, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(!@b"x" === @false, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(!((1, 0)) === @true, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(!((1, 2, "x")) === @false, 1, @SCRIPTNAME, @SCRIPTLINE);
g_calls = 0;
if ((tick(1), 0))
m = 10;
else
m = 20;
tap_ensure(m, 20, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(g_calls, 1, @SCRIPTNAME, @SCRIPTLINE);
g_calls = 0;
if ((((1, tick(0))), 1))
n = 10;
else
n = 20;
tap_ensure(n, 10, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(g_calls, 1, @SCRIPTNAME, @SCRIPTLINE);
g_calls = 0;
while ((tick(1), 0)) { o = o + 1; }
tap_ensure(o, 2, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(g_calls, 1, @SCRIPTNAME, @SCRIPTLINE);
g_calls = 0;
tap_ensure(!(tick(1), 0) === @true, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(g_calls, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_end ();
}