From 052144cabb126efe925a96f8a0597a0f2005d206 Mon Sep 17 00:00:00 2001 From: lemon Date: Mon, 23 Feb 2026 20:36:05 +0100 Subject: add metalang99 testsuite (preprocessor stress testing) --- test/external/metalang99/examples/factorial.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 test/external/metalang99/examples/factorial.c (limited to 'test/external/metalang99/examples/factorial.c') diff --git a/test/external/metalang99/examples/factorial.c b/test/external/metalang99/examples/factorial.c new file mode 100644 index 0000000..ed381fa --- /dev/null +++ b/test/external/metalang99/examples/factorial.c @@ -0,0 +1,16 @@ +// `...` is sometimes used to workaround a TCC bug, see +// . + +#include + +#define factorial(n) ML99_natMatch(n, v(factorial_)) +#define factorial_Z_IMPL(...) v(1) // `...` due to the TCC's bug. +#define factorial_S_IMPL(n) ML99_mul(ML99_inc(v(n)), factorial(v(n))) + +ML99_ASSERT_EQ(factorial(v(0)), v(1)); +ML99_ASSERT_EQ(factorial(v(1)), v(1)); +ML99_ASSERT_EQ(factorial(v(2)), v(2)); +ML99_ASSERT_EQ(factorial(v(3)), v(6)); +ML99_ASSERT_EQ(factorial(v(4)), v(24)); + +int main(void) {} -- cgit v1.2.3