aboutsummaryrefslogtreecommitdiff
path: root/tests/i/calls/program.cps
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.one>2026-10-16 20:53:52 +0800
committer_ov4 <ov4@ov4.one>2026-10-16 20:53:52 +0800
commit5c00b8cd03cbfc516cce92229f3f4974d7549c24 (patch)
tree9d13c180dc345b3e27d241ac56de2aef99dea739 /tests/i/calls/program.cps
parent1db81d50e8c664d0707491699485cfb23a0b5907 (diff)
test(compiler): cover fixed CIE behavior and runtime boundaries
Record independently traced outputs with pending human review. Keep standard syntax and naming conflicts as real failures. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat (limited to 'tests/i/calls/program.cps')
-rw-r--r--tests/i/calls/program.cps31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/i/calls/program.cps b/tests/i/calls/program.cps
new file mode 100644
index 0000000..0900b5c
--- /dev/null
+++ b/tests/i/calls/program.cps
@@ -0,0 +1,31 @@
+PROCEDURE Change(BYREF A : INTEGER, B : INTEGER, BYVAL C : INTEGER)
+ A <- A + 1
+ B <- B + 2
+ C <- C + 100
+ENDPROCEDURE
+FUNCTION Factorial(N : INTEGER) RETURNS INTEGER
+ IF N <= 1 THEN
+ RETURN 1
+ ENDIF
+ RETURN N * Factorial(N - 1)
+ENDFUNCTION
+PROCEDURE LocalCopy(Values : ARRAY OF INTEGER)
+ Values[1] <- 99
+ENDPROCEDURE
+PROCEDURE Shared(BYREF Values : ARRAY[1:2] OF INTEGER)
+ Values[2] <- Values[1] + 3
+ENDPROCEDURE
+DECLARE A : INTEGER
+DECLARE B : INTEGER
+DECLARE C : INTEGER
+DECLARE Values : ARRAY[1:2] OF INTEGER
+A <- 1
+B <- 2
+C <- 3
+CALL Change(A, B, C)
+Values[1] <- 4
+Values[2] <- 5
+CALL LocalCopy(Values)
+CALL Shared(Values)
+OUTPUT A, ":", B, ":", C, ":", Factorial(5)
+OUTPUT Values[1], ":", Values[2]