From 25ae363250e479701ed532c55c255e043c8240da Mon Sep 17 00:00:00 2001 From: _ov4 Date: Wed, 21 Oct 2026 06:04:52 +0000 Subject: feat(codegen): add variadic function templates Co-Authored-By: Claude Opus 5.5 --- tests/i/template-variadic/program.cps | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 tests/i/template-variadic/program.cps (limited to 'tests/i/template-variadic/program.cps') diff --git a/tests/i/template-variadic/program.cps b/tests/i/template-variadic/program.cps new file mode 100644 index 0000000..3127c89 --- /dev/null +++ b/tests/i/template-variadic/program.cps @@ -0,0 +1,37 @@ +OVERLOAD PROCEDURE PrintAll() +ENDPROCEDURE + +TEMPLATE +OVERLOAD PROCEDURE PrintAll(First : T, Others : Rest...) + OUTPUT First + CALL PrintAll(Others...) +ENDPROCEDURE + +TEMPLATE +PROCEDURE Forward(Values : Types...) + CALL PrintAll(Values...) +ENDPROCEDURE + +TEMPLATE +OVERLOAD FUNCTION Pick(Value : T) RETURNS INTEGER + RETURN 10 +ENDFUNCTION + +TEMPLATE +OVERLOAD FUNCTION Pick(First : T, Others : Rest...) RETURNS INTEGER + RETURN 20 +ENDFUNCTION + +OVERLOAD FUNCTION Pick(Value : INTEGER) RETURNS INTEGER + RETURN 30 +ENDFUNCTION + +CALL PrintAll(1, 2.5, 'c', "str") +CALL PrintAll() +CALL PrintAll(1, 2.5) +CALL Forward(7, 3.5) +CALL Forward() +OUTPUT Pick(1) +OUTPUT Pick(1.0) +OUTPUT Pick(1, 2) +OUTPUT Pick(1) -- cgit v1.3.1-4-g156e