#version 300 es int f(int a, int b, int c) { int a = b; // ERROR, redefinition { float a = float(a) + 1.0; } return a; } int f(int a, int b, int c); // okay to redeclare bool b; float b(int a); // ERROR: redefinition float c(int a); bool c; // ERROR: redefinition float f; // ERROR: redefinition float tan; // ERROR: redefines built-in function float sin(float x); // ERROR: can't redefine built-in functions float cos(float x) // ERROR: can't redefine built-in functions { return 1.0; } bool radians(bool x) // ERROR: can't overload built-in functions { return true; } invariant gl_Position; void main() { int g(); // ERROR: no local function declarations g(); float sin; // okay sin; sin(0.7); // ERROR, use of hidden function f(1,2,3); float f; // hides f() f = 3.0; gl_Position = vec4(f); for (int f = 0; f < 10; ++f) ++f; int x = 1; { float x = 2.0, /* 2nd x visible here */ y = x; // y is initialized to 2 int z = z; // ERROR: z not previously defined. } { int x = x; // x is initialized to '1' } struct S { int x; }; { S S = S(0); // 'S' is only visible as a struct and constructor S.x; // 'S' is now visible as a variable } int degrees; degrees(3.2); // ERROR, use of hidden built-in function }