#version 140

varying vec4 v;

in vec4 i;
out vec4 o;

in float gl_ClipDistance[5];

void main()
{
    float clip = gl_ClipDistance[2];
}
#ifdef GL_ES
#error GL_ES is set
#else
#error GL_ES is not set
#endif


in struct S { float f; } s; // ERROR

float patch = 3.1;

layout(location=3) in vec4 vl;  // ERROR

layout(location = 3) out vec4 factorBad;  // ERROR

#extension GL_ARB_explicit_attrib_location : enable

layout(location = 5) out vec4 factor;

#extension GL_ARB_separate_shader_objects : enable

layout(location=4) in vec4 vl2;

float fooi();

void foo()
{
    vec2 r1 = modf(v.xy, v.zw);  // ERROR, v.zw not l-value
    vec2 r2 = modf(o.xy, o.zw);
    o.z = fooi();
}

// Test extra-function initializers

float i1 = gl_FrontFacing ? -2.0 : 2.0;
float i2 = 102;

float fooi()
{
    return i1 + i2;
}

uniform sampler2DMS aaa1; // ERROR

#extension GL_ARB_texture_multisample : enable

uniform sampler2DMS aaa2;
