#version 450

int nonuniformEXT;

#extension GL_EXT_nonuniform_qualifier : enable

nonuniformEXT in vec4 nu_inv4;
nonuniformEXT float nu_gf;

nonuniformEXT out vec4 nu_outv4;           // ERROR, out
nonuniformEXT uniform vec4 nu_uv4;         // ERROR, uniform
nonuniformEXT const float nu_constf = 1.0; // ERROR, const

nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f)
{
    return nupi;
}

void main()
{
    nonuniformEXT int nu_li;
    nonuniformEXT const int nu_ci = 2; // ERROR, const

    foo(nu_li, nu_li);
    int table[5];
    int a;
    nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2);
    nu_li = nonuniformEXT(a, a);       // ERROR, too many arguments
    nu_li = nonuniformEXT();           // ERROR, no arguments
    nu_li = table[nonuniformEXT(3)];
}
layout(location=1) in struct S { float a; nonuniformEXT float b; } ins;  // ERROR, not on member
layout(location=3) in inbName { float a; nonuniformEXT float b; } inb;   // ERROR, not on member
