blob: 7e9f82bafe3446c0247a3dc0f671a88fbd7af61b [file] [log] [blame]
John Kessenich44e8cae2013-10-02 01:30:14 +00001#version 100
2
3int f(int a, int b, int c)
4{
5 int a = b; // ERROR, redefinition
6
7 {
8 float a = float(a) + 1.0;
9 }
10
11 return a;
12}
13
14int f(int a, int b, int c); // okay to redeclare
15
16bool b;
17float b(int a); // ERROR: redefinition
18
19float f; // ERROR: redefinition
John Kessenicha4351c52013-11-11 04:21:31 +000020float tan; // okay, built-in is in an outer scope
John Kesseniche1f0f5b2013-12-04 17:23:03 +000021float sin(float x); // ERROR: can't redefine built-in functions
22float cos(float x) // ERROR: can't redefine built-in functions
John Kessenich44e8cae2013-10-02 01:30:14 +000023{
24 return 1.0;
25}
John Kessenicha4351c52013-11-11 04:21:31 +000026bool radians(bool x) // okay, can overload built-in functions
27{
28 return true;
29}
John Kessenich44e8cae2013-10-02 01:30:14 +000030
31invariant gl_Position;
32
33void main()
34{
35 int g(); // ERROR: no local function declarations
36 g();
37
38 float sin; // okay
39 sin;
40
41 f(1,2,3);
42
43 float f; // hides f()
44 f = 3.0;
45
46 gl_Position = vec4(f);
47
48 for (int f = 0; f < 10; ++f)
49 ++f;
50
51 int x = 1;
52 {
53 float x = 2.0, /* 2nd x visible here */ y = x; // y is initialized to 2
54 int z = z; // ERROR: z not previously defined.
55 }
56 {
John Kesseniche1f0f5b2013-12-04 17:23:03 +000057 int x = x; // x is initialized to '1'
John Kessenich44e8cae2013-10-02 01:30:14 +000058 }
59
60 struct S
61 {
62 int x;
63 };
64 {
John Kesseniche1f0f5b2013-12-04 17:23:03 +000065 S S = S(0); // 'S' is only visible as a struct and constructor
66 S.x; // 'S' is now visible as a variable
John Kessenich44e8cae2013-10-02 01:30:14 +000067 }
68}