#version 450 core

buffer bn {
    int a[];
    float b[];
} buf;

uniform un {
    int a[];
    float b[];
} ubuf;

buffer bna {
    int a[];
    float b[];
} bufa[4];

uniform una {
    int a[];
    float b[];
} ubufa[4];

buffer abn {
    int aba[];
    float abb[];
};

uniform aun {
    int aua[];
    float aub[];
};

layout(binding=1)                             uniform samplerBuffer       uniformTexelBufferDyn[];
layout(binding=2, r32f)                       uniform imageBuffer         storageTexelBufferDyn[];
layout(binding=3)                             uniform uname { float a; }  uniformBuffer[];
layout(binding=4)                             buffer  bname { float b; }  storageBuffer[];
layout(binding=5)                             uniform sampler2D           sampledImage[];
layout(binding=6, r32f)                       uniform image2D             storageImage[];
layout(binding=8)                             uniform samplerBuffer       uniformTexelBuffer[];
layout(binding=9, r32f)                       uniform imageBuffer         storageTexelBuffer[];

int i;

void main()
{
    ubuf.a[3];
    ubuf.b[3];
    buf.a[3];
    buf.b[3];

    ubufa[3].a[3];
    ubufa[3].b[3];
    bufa[3].a[3];
    bufa[3].b[3];

    aua[3];
    aub[3];
    aba[3];
    abb[3];

    ubuf.a[i];             // ERROR
    ubuf.b[i];             // ERROR
    buf.a[i];              // ERROR
    buf.b[i];

    ubuf.a.length();       // ERROR
    ubuf.b.length();       // ERROR
    buf.a.length();        // ERROR
    buf.b.length();

    ubufa[1].a[i];         // ERROR
    ubufa[1].b[i];         // ERROR
    bufa[1].a[i];          // ERROR
    bufa[1].b[i];

    ubufa[1].a.length();   // ERROR
    ubufa[1].b.length();   // ERROR
    bufa[1].a.length();    // ERROR
    bufa[1].b.length();

    aua[i];                // ERROR
    aub[i];                // ERROR
    aba[i];                // ERROR
    abb[i];

    aua.length();          // ERROR
    aub.length();          // ERROR
    aba.length();          // ERROR
    abb.length();

    uniformTexelBufferDyn[1];
    storageTexelBufferDyn[1];
    uniformBuffer[1];
    storageBuffer[1];
    sampledImage[1];
    storageImage[1];
    uniformTexelBuffer[1];
    storageTexelBuffer[1];

    uniformTexelBufferDyn[i];  // ERROR, need extension
    storageTexelBufferDyn[i];  // ERROR, need extension
    uniformBuffer[i];          // ERROR, need extension
    storageBuffer[i];          // ERROR, need extension
    sampledImage[i];           // ERROR, need extension
    storageImage[i];           // ERROR, need extension
    uniformTexelBuffer[i];     // ERROR, need extension
    storageTexelBuffer[i];     // ERROR, need extension

    float local[] = ubuf.b;    // ERROR, can initialize with runtime-sized array
}
