aboutsummaryrefslogtreecommitdiff
path: root/tests/iii
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-17 08:31:27 +0000
committer_ov4 <ov4@ov4.org>2026-10-17 08:31:27 +0000
commite847e4c53cf21fcb96f7ed7765e305a7ec8e6c19 (patch)
treed065b2a3f0243df19e7013f433304d8032f83c7b /tests/iii
parentc372c08dc940db58f1da9cadeb64b4cb3c837704 (diff)
feat(classes): parse DELETE destructor methods and DELETE statement
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/iii')
-rw-r--r--tests/iii/class-destructor-duplicate-error/case.json8
-rw-r--r--tests/iii/class-destructor-duplicate-error/program.cps6
-rw-r--r--tests/iii/class-destructor-function-error/case.json8
-rw-r--r--tests/iii/class-destructor-function-error/program.cps5
-rw-r--r--tests/iii/class-destructor-global-error/case.json8
-rw-r--r--tests/iii/class-destructor-global-error/program.cps2
-rw-r--r--tests/iii/class-destructor-parameters-error/case.json8
-rw-r--r--tests/iii/class-destructor-parameters-error/program.cps4
8 files changed, 49 insertions, 0 deletions
diff --git a/tests/iii/class-destructor-duplicate-error/case.json b/tests/iii/class-destructor-duplicate-error/case.json
new file mode 100644
index 0000000..3ffc750
--- /dev/null
+++ b/tests/iii/class-destructor-duplicate-error/case.json
@@ -0,0 +1,8 @@
+{
+ "errors": [
+ {
+ "reason": "Duplicate member delete in class Box",
+ "line": 4
+ }
+ ]
+}
diff --git a/tests/iii/class-destructor-duplicate-error/program.cps b/tests/iii/class-destructor-duplicate-error/program.cps
new file mode 100644
index 0000000..661a9c2
--- /dev/null
+++ b/tests/iii/class-destructor-duplicate-error/program.cps
@@ -0,0 +1,6 @@
+CLASS Box
+PROCEDURE DELETE()
+ENDPROCEDURE
+PROCEDURE delete()
+ENDPROCEDURE
+ENDCLASS
diff --git a/tests/iii/class-destructor-function-error/case.json b/tests/iii/class-destructor-function-error/case.json
new file mode 100644
index 0000000..5482f9d
--- /dev/null
+++ b/tests/iii/class-destructor-function-error/case.json
@@ -0,0 +1,8 @@
+{
+ "errors": [
+ {
+ "reason": "destructor DELETE must be a PROCEDURE",
+ "line": 2
+ }
+ ]
+}
diff --git a/tests/iii/class-destructor-function-error/program.cps b/tests/iii/class-destructor-function-error/program.cps
new file mode 100644
index 0000000..89a2b5a
--- /dev/null
+++ b/tests/iii/class-destructor-function-error/program.cps
@@ -0,0 +1,5 @@
+CLASS Box
+FUNCTION DELETE() RETURNS INTEGER
+RETURN 0
+ENDFUNCTION
+ENDCLASS
diff --git a/tests/iii/class-destructor-global-error/case.json b/tests/iii/class-destructor-global-error/case.json
new file mode 100644
index 0000000..9df30b7
--- /dev/null
+++ b/tests/iii/class-destructor-global-error/case.json
@@ -0,0 +1,8 @@
+{
+ "errors": [
+ {
+ "reason": "destructor DELETE is only allowed in a CLASS",
+ "line": 1
+ }
+ ]
+}
diff --git a/tests/iii/class-destructor-global-error/program.cps b/tests/iii/class-destructor-global-error/program.cps
new file mode 100644
index 0000000..3bf448c
--- /dev/null
+++ b/tests/iii/class-destructor-global-error/program.cps
@@ -0,0 +1,2 @@
+PROCEDURE DELETE()
+ENDPROCEDURE
diff --git a/tests/iii/class-destructor-parameters-error/case.json b/tests/iii/class-destructor-parameters-error/case.json
new file mode 100644
index 0000000..6b2f839
--- /dev/null
+++ b/tests/iii/class-destructor-parameters-error/case.json
@@ -0,0 +1,8 @@
+{
+ "errors": [
+ {
+ "reason": "destructor DELETE must have no parameters",
+ "line": 2
+ }
+ ]
+}
diff --git a/tests/iii/class-destructor-parameters-error/program.cps b/tests/iii/class-destructor-parameters-error/program.cps
new file mode 100644
index 0000000..a3d9fd7
--- /dev/null
+++ b/tests/iii/class-destructor-parameters-error/program.cps
@@ -0,0 +1,4 @@
+CLASS Box
+PROCEDURE DELETE(x : INTEGER)
+ENDPROCEDURE
+ENDCLASS