aboutsummaryrefslogtreecommitdiff
path: root/tests/i/class-constructors/program.cps
blob: 2b85b4d829d890ffc58db0b41f10e8ddf0ae661f (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

CLASS Leaf
    Value : INTEGER
    PROCEDURE New()
        OUTPUT "leaf:", Value
        Value <- 3
    ENDPROCEDURE
ENDCLASS
CLASS Pair
    First : Leaf
    Second : Leaf
    PROCEDURE NEW()
        OUTPUT "pair:", First.Value + Second.Value
    ENDPROCEDURE
ENDCLASS
TYPE Wrapped
    DECLARE Item : Pair
ENDTYPE
CLASS Named
    Text : STRING
    PROCEDURE NEW(Name : STRING)
        Text <- Name
    ENDPROCEDURE
ENDCLASS
CLASS Plain
    Value : INTEGER
ENDCLASS
DECLARE A : Leaf
DECLARE B : Leaf()
DECLARE N : Named("name")
OUTPUT N.Text
DECLARE P : Plain()
OUTPUT P.Value
DECLARE Items : ARRAY[-1:0, 2:3] OF Leaf
OUTPUT Items[-1,2].Value, ",", Items[0,3].Value
DECLARE W : Wrapped
OUTPUT W.Item.First.Value, ",", W.Item.Second.Value
DECLARE Index : INTEGER
FOR Index <- 1 TO 2
    DECLARE Local : Leaf
    OUTPUT Local.Value
    Local.Value <- 99
NEXT Index