aboutsummaryrefslogtreecommitdiff
path: root/tests/i/function-call-statements/program.cps
diff options
context:
space:
mode:
Diffstat (limited to 'tests/i/function-call-statements/program.cps')
-rw-r--r--tests/i/function-call-statements/program.cps36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/i/function-call-statements/program.cps b/tests/i/function-call-statements/program.cps
new file mode 100644
index 0000000..403414b
--- /dev/null
+++ b/tests/i/function-call-statements/program.cps
@@ -0,0 +1,36 @@
+TYPE Raw = C_TYPE("void*")
+TYPE NativePointer = C_TYPE("int*")
+TYPE IntPointer = ^INTEGER
+DECLARE Number : INTEGER
+DECLARE Pointer : IntPointer
+DECLARE Address : Raw
+DECLARE Native : C_INT
+DECLARE NativeAddress : NativePointer
+Number <- 17
+Pointer <- ^Number
+Address <- (Raw)Pointer
+Pointer <- (IntPointer)Address
+OUTPUT Pointer^
+Native <- (C_INT)23
+NativeAddress <- ^Native
+Address <- (Raw)NativeAddress
+NativeAddress <- (NativePointer)Address
+OUTPUT NativeAddress^
+FUNCTION Echo(Value : INTEGER) RETURNS INTEGER
+ OUTPUT Value
+ RETURN Value
+ENDFUNCTION
+Echo(7)
+LENGTH("discard")
+CALL LENGTH("also discard")
+PROCEDURE Change(BYREF Value : INTEGER)
+ Value <- Value + 1
+ENDPROCEDURE
+Change(Number)
+CALL Change(Number)
+OUTPUT Number
+TRY
+ Echo(1 DIV 0)
+CATCH
+ OUTPUT "caught"
+ENDTRY