1617a3babSopenharmony_ci#version 420 core
2617a3babSopenharmony_ci
3617a3babSopenharmony_ci// testing input arrays without a gl_in[] block redeclaration, see 400.geom for with
4617a3babSopenharmony_ci
5617a3babSopenharmony_ciint i;
6617a3babSopenharmony_ci
7617a3babSopenharmony_civoid foo()
8617a3babSopenharmony_ci{
9617a3babSopenharmony_ci    gl_in.length();  // ERROR
10617a3babSopenharmony_ci    gl_in[1].gl_Position;
11617a3babSopenharmony_ci    gl_in[i].gl_Position;  // ERROR
12617a3babSopenharmony_ci}
13617a3babSopenharmony_ci
14617a3babSopenharmony_cilayout(triangles) in;
15617a3babSopenharmony_ci
16617a3babSopenharmony_ciin vec4 color3[3];
17617a3babSopenharmony_ci
18617a3babSopenharmony_civoid foo3()
19617a3babSopenharmony_ci{
20617a3babSopenharmony_ci    gl_in.length();
21617a3babSopenharmony_ci    gl_in[i].gl_Position;
22617a3babSopenharmony_ci    color3.length();
23617a3babSopenharmony_ci}
24617a3babSopenharmony_ci
25617a3babSopenharmony_ciuniform sampler2D s2D;
26617a3babSopenharmony_ciin vec2 coord[];
27617a3babSopenharmony_ciuniform vec4 v4;
28617a3babSopenharmony_ci
29617a3babSopenharmony_civoid foo4()
30617a3babSopenharmony_ci{
31617a3babSopenharmony_ci    const ivec2 offsets[5] =
32617a3babSopenharmony_ci    {
33617a3babSopenharmony_ci        ivec2(0,1),
34617a3babSopenharmony_ci        ivec2(1,-2),
35617a3babSopenharmony_ci        ivec2(0,3),
36617a3babSopenharmony_ci        ivec2(-3,0),
37617a3babSopenharmony_ci        ivec2(2,1)
38617a3babSopenharmony_ci    };
39617a3babSopenharmony_ci
40617a3babSopenharmony_ci    vec4 v = textureGatherOffset(s2D, coord[0], offsets[i].xy);
41617a3babSopenharmony_ci
42617a3babSopenharmony_ci    offsets[i].xy = ivec2(3);  // ERROR
43617a3babSopenharmony_ci    v4.x = 3.2;                // ERROR
44617a3babSopenharmony_ci    v4.xy;   // should have non-uniform type
45617a3babSopenharmony_ci}
46617a3babSopenharmony_ci
47617a3babSopenharmony_ciout gl_PerVertex {
48617a3babSopenharmony_ci    float gl_PointSize[1];  // ERROR, adding array
49617a3babSopenharmony_ci    float gl_ClipDistance;  // ERROR, removing array
50617a3babSopenharmony_ci};
51617a3babSopenharmony_ci
52617a3babSopenharmony_cifloat foo5()
53617a3babSopenharmony_ci{
54617a3babSopenharmony_ci    return i;  // implicit conversion of return type
55617a3babSopenharmony_ci}
56