aboutsummaryrefslogtreecommitdiff
path: root/tests/i/operator-assign/program.cps
blob: d5348064389cc225d12112fc4432f996ea047547 (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

CLASS Value
    N : INTEGER
    OVERLOAD PROCEDURE NEW()
    ENDPROCEDURE
    OVERLOAD PROCEDURE NEW(BYREF Other : Value)
        N <- Other.N
    ENDPROCEDURE
    OVERLOAD PROCEDURE OPERATOR<-(BYREF Other : Value)
        OUTPUT "copy:", Other.N
        N <- Other.N
    ENDPROCEDURE
    OVERLOAD PROCEDURE OPERATOR<-(Text : C_STRING)
        N <- LENGTH((STRING)Text)
    ENDPROCEDURE
ENDCLASS
FUNCTION Make() RETURNS Value
    DECLARE X : Value
    X.N <- 7
    RETURN X
ENDFUNCTION
TYPE ValuePtr = ^Value
TYPE Box
    DECLARE Item : Value
ENDTYPE
DECLARE A : Value
DECLARE B : Value
A.N <- 3
B <- A
B <- B
B <- Make()
A <- (C_STRING)"hello"
DECLARE R : Box
R.Item <- B
DECLARE Items : ARRAY[1:1] OF Value
Items[1] <- A
DECLARE P : ValuePtr
P <- ^A
P^ <- B
OUTPUT A.N, ":", B.N, ":", R.Item.N, ":", Items[1].N