#version 430

float[4][5][6] many[1][2][3];

float gu[][7];
float gimp[][];    // ERROR, implicit inner
float g4[4][7];
float g5[5][7];

float[4][7] foo(float a[5][7])
{
    float r[7];
    r = a[2];
    float[](a[0], a[1], r, a[3]);              // ERROR, too few dims
    float[4][7][4](a[0], a[1], r, a[3]);       // ERROR, too many dims
    return float[4][7](a[0], a[1], r, a[3]);
    return float[][](a[0], a[1], r, a[3]);
    return float[][7](a[0], a[1], a[2], a[3]);
}

void bar(float[5][7]) {}

void main()
{
    {
        float gu[3][4][2];

        gu[2][4][1] = 4.0;                     // ERROR, overflow
    }
    vec4 ca4[3][2] = vec4[][](vec4[2](vec4(0.0), vec4(1.0)),
                              vec4[2](vec4(0.0), vec4(1.0)),
                              vec4[2](vec4(0.0), vec4(1.0)));
    vec4 caim[][2] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)),
                              vec4[2](vec4(4.0), vec4(2.0)),
                              vec4[2](vec4(4.0), vec4(2.0)));
    vec4 caim2[][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)),
                              vec4[2](vec4(4.0), vec4(2.0)),
                              vec4[2](vec4(4.0), vec4(2.0)));
    vec4 caim3[3][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)),
                               vec4[2](vec4(4.0), vec4(2.0)),
                               vec4[2](vec4(4.0), vec4(2.0)));

    vec4 a4[3][2] = {vec4[](vec4(0.0), vec4(1.0)),
                     vec4[2](vec4(0.0), vec4(1.0)),
                     vec4[2](vec4(0.0), vec4(1.0)) };
    vec4 aim[][2] = {vec4[2](vec4(4.0), vec4(2.0)),
                     vec4[](vec4(4.0), vec4(2.0)),
                     vec4[2](vec4(4.0), vec4(2.0)) };
    vec4 aim2[][] = {vec4[2](vec4(4.0), vec4(2.0)),
                     vec4[2](vec4(4.0), vec4(2.0)),
                     vec4[](vec4(4.0), vec4(2.0)) };
    vec4 aim3[3][] = {vec4[2](vec4(4.0), vec4(2.0)),
                      vec4[2](vec4(4.0), vec4(2.0)),
                      vec4[2](vec4(4.0), vec4(2.0)) };

    vec4 bad2[3][] = {vec4[2](vec4(4.0), vec4(2.0)),              // ERROR
                      vec4[3](vec4(4.0), vec4(2.0), vec4(5.0)),
                      vec4[2](vec4(4.0), vec4(2.0)) };

    vec4 bad3[3][] = {vec4[3](vec4(4.0), vec4(2.0), vec4(5.0)),   // ERROR
                      vec4[2](vec4(4.0), vec4(2.0)),
                      vec4[2](vec4(4.0), vec4(2.0)) };

    vec4 bad4[4][] = {vec4[2](vec4(4.0), vec4(2.0)),              // ERROR
                      vec4[2](vec4(4.0), vec4(2.0)),
                      vec4[2](vec4(4.0), vec4(2.0)) };


    g4 = foo(g5);
    g5 = g4;           // ERROR, wrong types
    gu = g4;           // ERROR, not yet sized

    foo(gu);           // ERROR, not yet sized
    bar(g5);

    if (foo(g5) == g4)
        ;
    if (foo(g5) == g5)  // ERROR, different types
        ;

    float u[][7];
    u[2][2] = 3.0;
    float u[5][7];
    u[5][2] = 5.0;      // ERROR
    foo(u);
}

void foo3()
{
    float resize1[][5][7];
    resize1.length();           // ERROR
    resize1[1][4][5] = 2.0;
    resize1.length();           // ERROR
    float resize1[3][5][7];
    resize1.length();           // 3 in AST
    resize1[1].length();        // 5 in AST
    resize1[1][1].length();     // 7 in AST
    resize1[1][1][1].length();  // ERROR

    float resize2[][5][7];
    float resize2[3][4][7];     // ERROR, inner dim change

    float resize3[][5][7];
    float resize3[3][5][9];     // ERROR, inner dim changed

    float resize4[][5][7];
    int  resize4[3][5][7];      // ERROR, element type
}
