aboutsummaryrefslogtreecommitdiff
path: root/tests/i/class-overload-methods/program.cps
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-17 10:34:37 +0000
committer_ov4 <ov4@ov4.org>2026-10-17 10:34:37 +0000
commite572d278a44d286c8713d0ee4af9c72a3d1ca73c (patch)
tree2fd37a936d1d96869776b2fd4577a121eee974c2 /tests/i/class-overload-methods/program.cps
parent377a1fd2eadd2a70cd27f13e2fee6e96c8706a51 (diff)
feat(classes): overload methods and NEW constructors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/i/class-overload-methods/program.cps')
-rw-r--r--tests/i/class-overload-methods/program.cps46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/i/class-overload-methods/program.cps b/tests/i/class-overload-methods/program.cps
new file mode 100644
index 0000000..e68d416
--- /dev/null
+++ b/tests/i/class-overload-methods/program.cps
@@ -0,0 +1,46 @@
+CLASS Box
+Value : INTEGER
+PUBLIC OVERLOAD PROCEDURE NEW()
+Value <- 1
+ENDPROCEDURE
+PUBLIC OVERLOAD PROCEDURE NEW(x : INTEGER)
+Value <- x
+ENDPROCEDURE
+PUBLIC OVERLOAD PROCEDURE NEW(x : STRING)
+Value <- LENGTH(x)
+ENDPROCEDURE
+OVERLOAD FUNCTION Get() RETURNS INTEGER
+RETURN Value
+ENDFUNCTION
+OVERLOAD FUNCTION Get(x : INTEGER) RETURNS INTEGER
+RETURN Value + x
+ENDFUNCTION
+OVERLOAD FUNCTION Get(x : STRING) RETURNS STRING
+RETURN x & "!"
+ENDFUNCTION
+OVERLOAD PROCEDURE Set(x : INTEGER)
+Value <- x
+ENDPROCEDURE
+OVERLOAD PROCEDURE Set(x : STRING)
+Value <- LENGTH(x)
+ENDPROCEDURE
+ENDCLASS
+TYPE Holder
+DECLARE Item : Box
+ENDTYPE
+DECLARE a : Box
+DECLARE b : Box(7)
+DECLARE c : Box("four")
+DECLARE h : Holder
+DECLARE items : ARRAY[1:2] OF Box
+OUTPUT a.Get(), b.Get(), c.Get()
+OUTPUT h.Item.Get(), items[2].Get()
+OUTPUT b.Get(2)
+OUTPUT b.Get("ok")
+CALL a.Set("abc")
+OUTPUT a.Get()
+a <- NEW Box(8)
+OUTPUT a.Get()
+CALL a.NEW()
+OUTPUT a.Get()
+DELETE a