summaryrefslogtreecommitdiffstats
path: root/tests/cpu-program/pointer-deref.slang
blob: 34c6ba97fed76bed6464e8abc68683aa9f8861fa (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
//TEST:EXECUTABLE:
__target_intrinsic(cpp, "printf(\"%s\\n\", ($0).getBuffer())")
void writeln(String text);

struct SubRecord
{
    int field2;
    float field3;
}

struct Record
{
    int field;
    SubRecord sub;
}

public __extern_cpp int main()
{
    Record rec;
    Record *pRec = &rec;
    pRec.field = 1;
    pRec.sub.field2 = 2;
    pRec.sub.field3 = 3.0f;
    if (rec.field == 1 && rec.sub.field2 == 2 && pRec.sub.field3 == 3.0f)
    {
        writeln("success");
    }
    else
    {
        writeln("fail");
    }
    return 0;
}