summaryrefslogtreecommitdiffstats
path: root/tests/diagnostics/private-visibility.slang
blob: b7cb628f41decb0e0930c314c6cab434df0fee9c (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
//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:{{.*}}([[# @LINE+1]]): error 30601:
    public void publicMethod() {} // ERROR.
}

void test()
{
    MyType t; // should leave uninitialized.
    // CHECK-NOT:{{.*}}error
    t.func1(); // OK.
    // CHECK:{{.*}}([[# @LINE+1]]): error 30600:
    t.func(); // ERROR.
    // CHECK:{{.*}}([[# @LINE+1]]): error 30600:
    t[0] = 1; // ERROR.

    // CHECK:{{.*}}([[# @LINE+1]]): error 30600:
    t.member = 2;
}