aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/i/class-new-methods/case.json1
-rw-r--r--tests/i/class-new-methods/expected.txt3
-rw-r--r--tests/i/class-new-methods/notes.md5
-rw-r--r--tests/i/class-new-methods/program.cps16
-rw-r--r--tests/iii/class-method-errors/case.json4
5 files changed, 25 insertions, 4 deletions
diff --git a/tests/i/class-new-methods/case.json b/tests/i/class-new-methods/case.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/tests/i/class-new-methods/case.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/i/class-new-methods/expected.txt b/tests/i/class-new-methods/expected.txt
new file mode 100644
index 0000000..426f8ca
--- /dev/null
+++ b/tests/i/class-new-methods/expected.txt
@@ -0,0 +1,3 @@
+x
+call
+again
diff --git a/tests/i/class-new-methods/notes.md b/tests/i/class-new-methods/notes.md
new file mode 100644
index 0000000..53192fb
--- /dev/null
+++ b/tests/i/class-new-methods/notes.md
@@ -0,0 +1,5 @@
+# Explicit NEW calls
+
+Human review: pending. Expected output was independently traced by AI.
+
+NEW is an ordinary procedure: the bare member call stores x, CALL with mixed case stores call, and Reset calls this.NEW to store again. DECLARE is extended with arguments in the next implementation step.
diff --git a/tests/i/class-new-methods/program.cps b/tests/i/class-new-methods/program.cps
new file mode 100644
index 0000000..573fe0f
--- /dev/null
+++ b/tests/i/class-new-methods/program.cps
@@ -0,0 +1,16 @@
+CLASS Box
+ Value : STRING
+ PROCEDURE NEW(Text : STRING)
+ Value <- Text
+ ENDPROCEDURE
+ PROCEDURE Reset()
+ this.NEW("again")
+ ENDPROCEDURE
+ENDCLASS
+DECLARE Obj : Box
+Obj.NEW("x")
+OUTPUT Obj.Value
+CALL Obj.new("call")
+OUTPUT Obj.Value
+Obj.Reset()
+OUTPUT Obj.Value
diff --git a/tests/iii/class-method-errors/case.json b/tests/iii/class-method-errors/case.json
index 655296d..e871f28 100644
--- a/tests/iii/class-method-errors/case.json
+++ b/tests/iii/class-method-errors/case.json
@@ -9,10 +9,6 @@
"line": 13
},
{
- "reason": "NEW constructors are not implemented",
- "line": 15
- },
- {
"reason": "Duplicate member set in class Box",
"line": 17
},