yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Yong HeDiagnose on use of struct inheritance. (#7419)4ae6e9d8b

master
1.1 KiB61 linesraw
1//TEST:SIMPLE(filecheck=CHECK): -target hlsl -stage compute -entry computeMain
2RWStructuredBuffer<int> outputBuffer;
3
4#pragma warning(disable:30816)
5
6//CHECK: error 30851
7
8struct DefaultStructNoInit_base
9{
10    int data0 = 2;
11    int data1 = 2;
12};
13extension DefaultStructNoInit_base
14{
15    __init(int indata)
16    {
17        //unused
18    }
19}
20struct DefaultStructNoInit : DefaultStructNoInit_base
21{
22    int dataInherit = 2;
23};
24
25struct DefaultStructWithInit_base
26{
27    int data0;
28    int data1 = 3;
29};
30extension DefaultStructWithInit_base
31{
32    __init(int indata)
33    {
34        //unused
35    }
36    __init()
37    {
38        data0 = 3;
39    }
40}
41struct DefaultStructWithInit : DefaultStructWithInit_base
42{
43    int dataInherit = 3;
44};
45
46[numthreads(1, 1, 1)]
47void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID)
48{
49    DefaultStructNoInit noInit = DefaultStructNoInit();
50    DefaultStructWithInit withInit = DefaultStructWithInit();
51    // BUF: 1
52    outputBuffer[0] = true
53        && noInit.data0 == 2
54        && noInit.data1 == 2
55        && noInit.dataInherit == 2
56
57        && withInit.data0 == 3
58        && withInit.data1 == 3
59        && withInit.dataInherit == 3
60        ;
61}