summaryrefslogtreecommitdiffstats
path: root/tests/language-feature/interfaces/argument-direction-mismatch.slang
blob: e02715ea041a9b6beb8d3cdf30b9b1495323c36e (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
//TEST:SIMPLE(filecheck=CHECK): -target spirv

public interface ITest {
    public void testIn(int a);
    public void testOut(out int b);
};

public struct TestImpl : ITest {
    // CHECK: ([[# @LINE + 1]]): error 38108
    public void testIn(out int a) {
        a = 5;
    }
    // CHECK: ([[# @LINE + 1]]): error 38108
    public void testOut(int b) {
        b = 6;
    }
}

RWStructuredBuffer<int> output;

void doSomething<T>(T data) where T : ITest {
    int a = 516;
    data.testIn(a);
    int b = 687;
    data.testOut(b);

    output[0] = a;
    output[1] = b;
}

[shader("compute")]
[numthreads(1,1,1)]
void computeMain()
{
    TestImpl data;
    doSomething(data);
}