aboutsummaryrefslogtreecommitdiff
path: root/compiler/tests/verifier/type_arraylength.good
blob: 128e9552956d244e9bdf698bc267a0d7ba4cbc55 (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

() f()
{
    // compile-time length
    var int#[1] ca1;
    var int#[10 + sizeof ca1] cb1;
    var int#[2-1] ca2;
    
    // compile-time length, pointer
    var int#[1] var^ pca1;
    var int#[10 + sizeof ca1] var^ pcb1;
    var int#[2-1] var^ pca2;
    
    // runtime length, pointer
    count length = 2;
    count size = 3;
    int#[length] var^ ra1;
    int#[length] var^ ra2;
    int#[size] var^ rb1;
    
    // initialize variables to avoid compiler warnings
    pca1 = @ca1;
    pcb1 = @cb1;
    pca2 = @ca2;
    // TODO how to initialize ra2, ra2 and rb1?
    
    // compile-time lengths
    ca1 = ca1;
    ca1 = ca2;
    cb1 = cb1;
    
    pca1 = pca1;
    pca1 = pca2;
    pcb1 = pcb1;
    
    ca1 = pca1^;
    pcb1 = @cb1;
    
    // runtime lengths
    ra1 = ra1;
    ra1 = ra2;
    rb1 = rb1;
}