#version 110

int f(int a, int b, int c)
{
	int a = b;  // ERROR, redefinition

    {
		float a = float(a) + 1.0; // okay
    }

	return a;
}

int f(int a, int b, int c);  // okay to redeclare

bool b;
float b(int a);      // okay, b and b() are different

float c(int a);
bool c;              // okay, and c() are different

float f;             // okay f and f() are different
float tan;           // okay, hides built-in function
float sin(float x);  // okay, can redefine built-in functions
float cos(float x)   // okay, can redefine built-in functions
{
	return 1.0;
}
bool radians(bool x) // okay, can overload built-in functions
{
    return true;
}



void main()
{
    int g();    // okay
    g();

    float sin; // okay
    sin;
    sin(0.7);  // okay
    f(1,2,3);

    float 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);
}
