blob: ef73e7f0efa08b2457a0a3665830f091ab78a54b [file] [log] [blame]
group valid "Valid scoping and name redeclaration cases"
case local_variable_hides_global_variable
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int a = -1;
void main()
{
${SETUP}
int a = in0;
out0 = a;
${OUTPUT}
}
""
end
case block_variable_hides_local_variable
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
void main()
{
${SETUP}
int a = in0;
{
int a = -1;
}
out0 = a;
${OUTPUT}
}
""
end
case block_variable_hides_global_variable
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int a = -1;
void main()
{
${SETUP}
{
int a = in0;
out0 = a;
}
${OUTPUT}
}
""
end
case for_init_statement_variable_hides_local_variable
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
void main()
{
${SETUP}
int a = in0;
for (int a = 0; a < 10; a++)
{
}
out0 = a;
${OUTPUT}
}
""
end
case while_condition_variable_hides_local_variable
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
void main()
{
${SETUP}
int a = in0;
int i = 0;
while (bool a = (i < 1))
{
i++;
}
out0 = a;
${OUTPUT}
}
""
end
case for_init_statement_variable_hides_global_variable
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int a = 5;
void main()
{
${SETUP}
for (int a = 0; a < 10; a++)
{
}
out0 = in0 + a - 5;
${OUTPUT}
}
""
end
case while_condition_variable_hides_global_variable
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int a = 5;
void main()
{
${SETUP}
int i = 0;
while (bool a = (i < 1))
{
i++;
}
out0 = in0 + a - 5;
${OUTPUT}
}
""
end
case variable_in_if_hides_global_variable
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int a = 1;
void main()
{
${SETUP}
if (true)
int a = 42;
out0 = a*in0;
${OUTPUT}
}
""
end
case variable_from_outer_scope_visible_in_initializer
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
void main()
{
${SETUP}
int a = in0;
{
int a = a+5, b = a-5;
out0 = b;
a = 42;
}
out0 = out0 + a - in0;
${OUTPUT}
}
""
end
case local_int_variable_hides_struct_type
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
struct S { int val; };
void main()
{
${SETUP}
int S = S(in0).val;
out0 = S;
${OUTPUT}
}
""
end
case local_struct_variable_hides_struct_type
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
struct S { int val; };
void main()
{
${SETUP}
S S = S(in0);
out0 = S.val;
${OUTPUT}
}
""
end
case local_variable_hides_function
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int foo (int x) { return x; }
void main()
{
${SETUP}
int foo = in0;
out0 = foo;
${OUTPUT}
}
""
end
case function_parameter_hides_global_variable
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int a = -1;
int func (int a) { return a; }
void main()
{
${SETUP}
out0 = func(in0);
${OUTPUT}
}
""
end
case function_parameter_hides_struct_type
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
struct S { int x; };
int func (int S) { return S; }
void main()
{
${SETUP}
out0 = func(in0);
${OUTPUT}
}
""
end
case function_parameter_hides_function
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int func (int func) { return func; }
void main()
{
${SETUP}
out0 = func(in0);
${OUTPUT}
}
""
end
case local_variable_in_inner_scope_hides_function_parameter
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int func (int inp, int x) { { int x = 5; return inp + x - 5; } }
void main()
{
${SETUP}
out0 = func(in0, 42);
${OUTPUT}
}
""
end
case redeclare_function
version 310 es
values
{
input int in0 = [ 1 | 2 | 3 ];
output int out0 = [ 1 | 2 | 3 ];
}
both ""
#version 310 es
precision highp float;
precision highp int;
${DECLARATIONS}
int func (int x);
int func (int);
int func (int inp) { return inp; }
void main()
{
${SETUP}
out0 = func(in0);
${OUTPUT}
}
""
end
end