aboutsummaryrefslogtreecommitdiff
path: root/tests/i/class-delete-designators/program.cps
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-17 08:36:19 +0000
committer_ov4 <ov4@ov4.org>2026-10-17 08:36:19 +0000
commit6a3b31af5dbb22749e6d5a1cad9dfaab6863b615 (patch)
tree58d2e7d956c8c605599a3f760040234ec2556d29 /tests/i/class-delete-designators/program.cps
parentabd56ef20bc8061bbecec29edd1301d324c2cb34 (diff)
feat(classes): destroy stack objects during exception unwinding
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/i/class-delete-designators/program.cps')
-rw-r--r--tests/i/class-delete-designators/program.cps30
1 files changed, 30 insertions, 0 deletions
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