1617a3babSopenharmony_ci
2617a3babSopenharmony_ci// array size from initializer
3617a3babSopenharmony_cistatic float g_array [ ] = { 1, 2, 3, 4, 5 };
4617a3babSopenharmony_ci
5617a3babSopenharmony_ci// Unused: array size from initializer
6617a3babSopenharmony_cistatic float g_array_unused [ ] = { 1, 2, 3, 4, 5, 6, 7 };
7617a3babSopenharmony_ci
8617a3babSopenharmony_ci// Test initializer sizing for arrayed structs
9617a3babSopenharmony_cistatic struct mystruct {
10617a3babSopenharmony_ci    int i;
11617a3babSopenharmony_ci    float f;
12617a3babSopenharmony_ci} g_mystruct[] = {
13617a3babSopenharmony_ci    { 1, 2.0 },
14617a3babSopenharmony_ci    { 3, 4.0 },
15617a3babSopenharmony_ci};
16617a3babSopenharmony_ci
17617a3babSopenharmony_cistruct PS_OUTPUT { float4 color : SV_Target0; };
18617a3babSopenharmony_ci
19617a3babSopenharmony_ci// INVALID: implicit size requires an initializer expression.
20617a3babSopenharmony_ci// uniform float bad[];
21617a3babSopenharmony_ci
22617a3babSopenharmony_ci// INVALID: function parameters cannot be implicitly sized
23617a3babSopenharmony_ci// void BadFunction(int a[]) { }
24617a3babSopenharmony_ci
25617a3babSopenharmony_civoid main(out PS_OUTPUT ps_output)
26617a3babSopenharmony_ci{
27617a3babSopenharmony_ci    // local array sized from initializers
28617a3babSopenharmony_ci    float l_array[] = { 1, 2, 3 };
29617a3babSopenharmony_ci    int idx;
30617a3babSopenharmony_ci
31617a3babSopenharmony_ci    ps_output.color = g_array[0] + g_array[4] + l_array[1] + g_mystruct[0].f + g_array[idx];
32617a3babSopenharmony_ci}
33