From e847e4c53cf21fcb96f7ed7765e305a7ec8e6c19 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Sat, 17 Oct 2026 08:31:27 +0000 Subject: feat(classes): parse DELETE destructor methods and DELETE statement Co-Authored-By: Claude Opus 5.5 --- tests/iii/class-destructor-duplicate-error/case.json | 8 ++++++++ tests/iii/class-destructor-duplicate-error/program.cps | 6 ++++++ tests/iii/class-destructor-function-error/case.json | 8 ++++++++ tests/iii/class-destructor-function-error/program.cps | 5 +++++ tests/iii/class-destructor-global-error/case.json | 8 ++++++++ tests/iii/class-destructor-global-error/program.cps | 2 ++ tests/iii/class-destructor-parameters-error/case.json | 8 ++++++++ tests/iii/class-destructor-parameters-error/program.cps | 4 ++++ 8 files changed, 49 insertions(+) create mode 100644 tests/iii/class-destructor-duplicate-error/case.json create mode 100644 tests/iii/class-destructor-duplicate-error/program.cps create mode 100644 tests/iii/class-destructor-function-error/case.json create mode 100644 tests/iii/class-destructor-function-error/program.cps create mode 100644 tests/iii/class-destructor-global-error/case.json create mode 100644 tests/iii/class-destructor-global-error/program.cps create mode 100644 tests/iii/class-destructor-parameters-error/case.json create mode 100644 tests/iii/class-destructor-parameters-error/program.cps (limited to 'tests') 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 -- cgit v1.3.1-4-g156e