summaryrefslogtreecommitdiff
path: root/tests/diagnostics/private-visibility.slang
blob: 7c0bad9706a6d437a6c8d9023b55a93c2733d6cc (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
//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK):

struct MyType
{
    private int member;
    private int func()
    {
        return member;
    }
    struct SubType
    {
        int member2;
        int func2(MyType m)
        {
            return m.member + member2; // OK.
        }
    }
    int func1() { return member; }

    private __init() { member = 0; }
    
    private __subscript(int i)->int
    {
        get { return member; }
        set { member = newValue; }
    }
    // CHECK:{{.*}}(28): error 30601:
    public void publicMethod() {} // ERROR.
}

void test()
{
    // CHECK:{{.*}}(34): error 30600:
    MyType t; // ERROR.
    // CHECK-NOT:{{.*}}error
    t.func1(); // OK.
    // CHECK:{{.*}}(38): error 30600:
    t.func(); // ERROR.
    // CHECK:{{.*}}(40): error 30600:
    t[0] = 1; // ERROR.

    // CHECK:{{.*}}(43): error 30600:
    t.member = 2;
}