aboutsummaryrefslogtreecommitdiff
path: root/tests/i
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
parent377a1fd2eadd2a70cd27f13e2fee6e96c8706a51 (diff)
feat(classes): overload methods and NEW constructors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/i')
-rw-r--r--tests/i/class-overload-methods/case.json1
-rw-r--r--tests/i/class-overload-methods/expected.txt7
-rw-r--r--tests/i/class-overload-methods/notes.md7
-rw-r--r--tests/i/class-overload-methods/program.cps46
4 files changed, 61 insertions, 0 deletions
diff --git a/tests/i/class-overload-methods/case.json b/tests/i/class-overload-methods/case.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/tests/i/class-overload-methods/case.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/i/class-overload-methods/expected.txt b/tests/i/class-overload-methods/expected.txt
new file mode 100644
index 0000000..d7fa519
--- /dev/null
+++ b/tests/i/class-overload-methods/expected.txt
@@ -0,0 +1,7 @@
+174
+11
+9
+ok!
+3
+8
+1
diff --git a/tests/i/class-overload-methods/notes.md b/tests/i/class-overload-methods/notes.md
new file mode 100644
index 0000000..accde5e
--- /dev/null
+++ b/tests/i/class-overload-methods/notes.md
@@ -0,0 +1,7 @@
+# class-overload-methods
+
+Human review: pending. Expected output was independently traced by AI, not captured from cpsc.
+
+Basis: OVERLOAD is a project extension.
+
+Trace: The default constructor sets 1, INTEGER sets 7, STRING length sets 4. Holder.Item and both array elements default to 1. Get(INTEGER) adds 2 to 7; Get(STRING) appends !. Set(STRING) stores length 3. Keyword NEW stores 8; explicit NEW() resets to 1.
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