#version 450

layout(location = 1) in vec4 in1;
in vec4 in2;                        // ERROR
layout(location = 3) in vec4 in3;

layout(location = 1) out vec4 out1;
out vec4 out2;                      // ERROR
layout(location = 3) out vec4 out3;

layout(location = 10) out inb1 { 
    vec4 a;
    vec4 b;
} inbi1;
out inb2 { 
    layout(location = 12) vec4 a;
    layout(location = 13) vec4 b;
} inbi2;
out inb3 {                          // ERROR
    vec4 a;
    vec4 b;
} inbi3;

layout(location = 14) out struct S1 { vec4 a; } s1;
out struct S2 { vec4 a; } s2;       // ERROR

struct SS { int a; };
out layout(location = 15) SS ss1;
out SS ss2;                         // ERROR

out gl_PerVertex {
    vec4 gl_Position;
    float gl_ClipDistance[2];
};

void main()
{
    gl_ClipDistance[0] = 1.0;
}