From 6a3b31af5dbb22749e6d5a1cad9dfaab6863b615 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Sat, 17 Oct 2026 08:36:19 +0000 Subject: feat(classes): destroy stack objects during exception unwinding Co-Authored-By: Claude Opus 5.5 --- tests/i/class-delete-designators/program.cps | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 tests/i/class-delete-designators/program.cps (limited to 'tests/i/class-delete-designators/program.cps') diff --git a/tests/i/class-delete-designators/program.cps b/tests/i/class-delete-designators/program.cps new file mode 100644 index 0000000..be552e7 --- /dev/null +++ b/tests/i/class-delete-designators/program.cps @@ -0,0 +1,30 @@ +CLASS Item + Id : INTEGER + PROCEDURE DELETE() + OUTPUT "item:", Id + ENDPROCEDURE + PROCEDURE Explicit() + this.DELETE() + ENDPROCEDURE + PROCEDURE Release() + DELETE this + ENDPROCEDURE +ENDCLASS +TYPE ItemPtr = ^Item +DECLARE Obj : Item +DECLARE Ptr : ItemPtr +Obj <- NEW Item() +Obj.Id <- 1 +Ptr <- ^Obj +CALL Obj.Explicit() +DELETE Ptr^ +Obj <- NEW Item() +Obj.Id <- 2 +CALL Obj.Release() +DECLARE Arr : ARRAY[1:2] OF Item +Arr[2].Id <- 3 +TRY + DELETE Arr[2] +CATCH + OUTPUT "array caught" +ENDTRY -- cgit v1.3.1-4-g156e