aboutsummaryrefslogtreecommitdiff
path: root/tests/iii/class-method-errors
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-17 06:02:21 +0000
committer_ov4 <ov4@ov4.org>2026-10-17 06:02:21 +0000
commit3425b95cb654f8e1adc98365a4b370aa1fff8b4d (patch)
tree4d81b91d0bd807cd6f7ced037533d6e60f5c307f /tests/iii/class-method-errors
parent4e22f464387725a5a282f3d72e11cfb694a31a5a (diff)
feat(classes): support ordinary member methods and this references
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat (limited to 'tests/iii/class-method-errors')
-rw-r--r--tests/iii/class-method-errors/case.json52
-rw-r--r--tests/iii/class-method-errors/notes.md3
-rw-r--r--tests/iii/class-method-errors/program.cps35
3 files changed, 90 insertions, 0 deletions
diff --git a/tests/iii/class-method-errors/case.json b/tests/iii/class-method-errors/case.json
new file mode 100644
index 0000000..655296d
--- /dev/null
+++ b/tests/iii/class-method-errors/case.json
@@ -0,0 +1,52 @@
+{
+ "errors": [
+ {
+ "reason": "Cannot redeclare this inside a method",
+ "line": 11
+ },
+ {
+ "reason": "A method parameter cannot be named this",
+ "line": 13
+ },
+ {
+ "reason": "NEW constructors are not implemented",
+ "line": 15
+ },
+ {
+ "reason": "Duplicate member set in class Box",
+ "line": 17
+ },
+ {
+ "reason": "Duplicate member Value in class Box",
+ "line": 19
+ },
+ {
+ "reason": "Cannot access private field Hidden of type Box",
+ "line": 25
+ },
+ {
+ "reason": "Cannot access private method Secret of type Box",
+ "line": 26
+ },
+ {
+ "reason": "Cannot access private method Secret of type Box",
+ "line": 30
+ },
+ {
+ "reason": "Cannot access private field Hidden of type Box",
+ "line": 31
+ },
+ {
+ "reason": "Incorrect # arguments passed to Box.Set",
+ "line": 32
+ },
+ {
+ "reason": "Type Box has no method Missing",
+ "line": 33
+ },
+ {
+ "reason": "Type INTEGER has no method Set",
+ "line": 35
+ }
+ ]
+}
diff --git a/tests/iii/class-method-errors/notes.md b/tests/iii/class-method-errors/notes.md
new file mode 100644
index 0000000..f9be5b9
--- /dev/null
+++ b/tests/iii/class-method-errors/notes.md
@@ -0,0 +1,3 @@
+# class-method-errors
+
+Reject private access from outside the owning class, duplicate members, NEW constructors, redeclarations of this, incorrect arguments and invalid receivers.
diff --git a/tests/iii/class-method-errors/program.cps b/tests/iii/class-method-errors/program.cps
new file mode 100644
index 0000000..f2503e2
--- /dev/null
+++ b/tests/iii/class-method-errors/program.cps
@@ -0,0 +1,35 @@
+CLASS Box
+ PRIVATE Hidden : INTEGER
+ PUBLIC Value : INTEGER
+ PROCEDURE Set(Number : INTEGER)
+ Hidden <- Number
+ ENDPROCEDURE
+ PRIVATE FUNCTION Secret() RETURNS INTEGER
+ RETURN Hidden
+ ENDFUNCTION
+ PROCEDURE BadLocal()
+ DECLARE this : Box
+ ENDPROCEDURE
+ PROCEDURE BadParam(this : Box)
+ ENDPROCEDURE
+ PROCEDURE NEW()
+ ENDPROCEDURE
+ PROCEDURE set()
+ ENDPROCEDURE
+ FUNCTION Value() RETURNS INTEGER
+ RETURN 0
+ ENDFUNCTION
+ENDCLASS
+CLASS Stranger
+ PROCEDURE Probe(Other : Box)
+ OUTPUT Other.Hidden
+ OUTPUT Other.Secret()
+ ENDPROCEDURE
+ENDCLASS
+DECLARE B : Box
+OUTPUT B.Secret()
+OUTPUT B.Hidden
+B.Set()
+B.Missing()
+DECLARE Number : INTEGER
+Number.Set(1)