function zero(...rest) { assertEq(rest.length, 0, "zero rest wrong length"); } function tzero() { zero(); } tzero(); tzero(); tzero(); function one(...rest) { assertEq(rest.length, 1, "one rest wrong length"); } function tone() { one(0); } tone(); tone(); tone(); function two(...rest) { assertEq(rest.length, 2, "two rest wrong length"); } function ttwo() { two(0, 1); } ttwo(); ttwo(); ttwo(); function zeroWithLeading0(x, ...rest) { assertEq(rest.length, 0, "zeroWithLeading0 rest wrong length"); } function tzeroWithLeading0() { zeroWithLeading0(); } tzeroWithLeading0(); tzeroWithLeading0(); tzeroWithLeading0(); function zeroWithLeading1(x, ...rest) { assertEq(rest.length, 0, "zeroWithLeading1 rest wrong length"); } function tzeroWithLeading1() { zeroWithLeading1(0); } tzeroWithLeading1(); tzeroWithLeading1(); tzeroWithLeading1(); function oneWithLeading(x, ...rest) { assertEq(rest.length, 1, "oneWithLeading rest wrong length"); } function toneWithLeading() { oneWithLeading(0, 1); } toneWithLeading(); toneWithLeading(); toneWithLeading(); function twoWithLeading(x, ...rest) { assertEq(rest.length, 2, "twoWithLeading rest wrong length"); } function ttwoWithLeading() { twoWithLeading(0, 1, 2); } ttwoWithLeading(); ttwoWithLeading(); ttwoWithLeading();