aboutsummaryrefslogtreecommitdiff
path: root/tests/i/class-delete-designators/program.cps
diff options
context:
space:
mode:
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