Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / 430scope.vert
1 #version 430 core
2
3 int f(int a, int b, int c)
4 {
5         int a = b;  // ERROR, redefinition
6
7     {
8                 float a = float(a) + 1.0; // okay
9     }
10
11         return a;
12 }
13
14 int f(int a, int b, int c);  // okay to redeclare
15
16 bool b;
17 float b(int a);      // ERROR: redefinition
18
19 float c(int a);
20 bool c;              // ERROR: redefinition
21
22 float f;             // ERROR: redefinition
23 float tan;           // okay, hides built-in function
24 float sin(float x);  // okay, can redefine built-in functions
25 float cos(float x)   // okay, can redefine built-in functions
26 {
27         return 1.0;
28 }
29 bool radians(bool x) // okay, can overload built-in functions
30 {
31     return true;
32 }
33
34 invariant gl_Position;
35
36 void main()
37 {
38     int g();    // okay
39     g();
40
41     float sin; // okay
42     sin;
43     sin(0.7);  // ERROR, use of hidden function
44     f(1,2,3);
45
46     float f;    // hides f()
47     f = 3.0;
48
49     gl_Position = vec4(f);
50
51     for (int f = 0; f < 10; ++f)
52         ++f;
53
54     int x = 1;
55     { 
56         float x = 2.0, /* 2nd x visible here */ y = x; // y is initialized to 2
57         int z = z; // ERROR: z not previously defined.
58     }
59     {
60         int x = x; // x is initialized to '1'
61     }
62
63     struct S 
64     { 
65         int x; 
66     };
67     {
68         S S = S(0); // 'S' is only visible as a struct and constructor 
69         S.x;        // 'S' is now visible as a variable
70     }
71
72     int degrees;
73     degrees(3.2);  // ERROR, use of hidden built-in function
74 }