aboutsummaryrefslogtreecommitdiff
path: root/tests/i/class-raii/program.cps
blob: ff350f9d57d55208aa5db4c54bebd37a61947f9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

CLASS Traced
    Id : INTEGER
    PROCEDURE NEW()
        Id <- 0
    ENDPROCEDURE
    PROCEDURE DELETE()
        OUTPUT "destroy:", Id
    ENDPROCEDURE
ENDCLASS
TYPE Wrapped
    DECLARE Item : Traced
ENDTYPE
PROCEDURE Copy(Value : Traced)
    DECLARE Local : Traced
    Local.Id <- 20
    Value.Id <- 21
ENDPROCEDURE
PROCEDURE Work()
    DECLARE First : Traced
    First.Id <- 1
    DECLARE Rebound : Traced
    Rebound.Id <- 2
    Rebound <- NEW Traced()
    Rebound.Id <- 99
    DECLARE I : INTEGER
    FOR I <- 1 TO 3
        DECLARE Again : Traced
    Again.Id <- 3
        Again.Id <- I + 30
    NEXT I
    DECLARE Arr : ARRAY[1:2] OF Plain
    Arr[1].Item.Id <- 41
    Arr[2].Item.Id <- 42
    DECLARE Rec : Wrapped
    Rec.Item.Id <- 50
    CALL Copy(First)
    IF TRUE THEN
        RETURN
    ENDIF
    DECLARE Never : Traced
    Never.Id <- 77
ENDPROCEDURE
CLASS Plain
    Item : Traced
ENDCLASS
DECLARE Global : Traced
    Global.Id <- 100
CALL Work()
OUTPUT "main end"