#version 420 core // testing input arrays without a gl_in[] block redeclaration, see 400.geom for with int i; void foo() { gl_in.length(); // ERROR gl_in[1].gl_Position; gl_in[i].gl_Position; // ERROR } layout(triangles) in; in vec4 color3[3]; void foo3() { gl_in.length(); gl_in[i].gl_Position; color3.length(); } uniform sampler2D s2D; in vec2 coord[]; uniform vec4 v4; void foo4() { const ivec2 offsets[5] = { ivec2(0,1), ivec2(1,-2), ivec2(0,3), ivec2(-3,0), ivec2(2,1) }; vec4 v = textureGatherOffset(s2D, coord[0], offsets[i].xy); offsets[i].xy = ivec2(3); // ERROR v4.x = 3.2; // ERROR v4.xy; // should have non-uniform type } out gl_PerVertex { float gl_PointSize[1]; // ERROR, adding array float gl_ClipDistance; // ERROR, removing array }; float foo5() { return i; // implicit conversion of return type }