blob: 4f0c69b5ddbc8a77d78141c2e776eccfe448b338 [file] [log] [blame]
John Kessenich77d908a2013-11-09 00:18:22 +00001// okay
John Kessenich816e9bc2013-10-04 21:09:36 +00002#version 100
John Kessenich968c8f82015-04-30 03:22:41 +00003int a[3] = { 2, 3, 4, }; // ERROR (lots)
John Kessenich66cdf362013-12-04 20:08:16 +00004#version 100
John Kessenich816e9bc2013-10-04 21:09:36 +00005int uint;
6
7attribute vec4 v[3]; // ERROR
8
9float f = 2; // ERROR
10
11uniform block { // ERROR
12 int x;
13};
14
15void foo(float);
16
17void main()
18{
19 foo(3); // ERROR
20 int s = 1 << 4; // ERROR
21 s = 16 >> 2; // ERROR
22 if (a == a); // ERROR
23 int b, c;
24 b = c & 4; // ERROR
25 b = c % 4; // ERROR
26 b = c | 4; // ERROR
27 b >>= 2; // ERROR
28 b <<= 2; // ERROR
29 b %= 3; // ERROR
30
31 struct S {
32 float f;
33 float a[10];
34 } s1, s2;
35
36 s1 = s2; // ERROR
37 if (s1 == s2); // ERROR
38 if (s1 != s2); // ERROR
39
40 switch(b) { // ERROR
41 }
42}
43
44invariant gl_FragColor;
45float fa[]; // ERROR
John Kessenich01c22af2013-11-08 07:13:18 +000046float f13;
47invariant f13; // ERROR
48struct S { int a; };
John Kessenichf0fce802014-10-08 21:29:29 +000049invariant S; // ERROR, not an input or output
John Kessenich01c22af2013-11-08 07:13:18 +000050invariant float fi; // ERROR
51varying vec4 av;
52invariant av; // okay in v100
53
54void foo10()
55{
56 invariant f; // ERROR
57 invariant float f2; // ERROR
58 float f3;
59 invariant f3; // ERROR
60}
61
62uniform vec2 uv2;
63invariant uv2; // ERROR
64invariant uniform vec3 uv3; // ERROR
65
66sampler2D glob2D; // ERROR
67void f11(sampler2D p2d)
68{
69 sampler2D v2D; // ERROR
70}
71varying sampler2D vary2D; // ERROR
72
73struct sp {
74 highp float f;
75 in float g; // ERROR
76 uniform float h; // ERROR
77 invariant float i; // ERROR
78};
John Kessenich115a0ad2013-11-11 18:50:06 +000079
80uniform sampler3D s3D; // ERROR
81
82#extension GL_OES_texture_3D : enable
83
84precision highp sampler3D;
85uniform sampler3D s3D2;
86
87void foo234()
88{
89 texture3D(s3D2, vec3(0.2), 0.2);
90 texture3DProj(s3D2, v[1], 0.4);
John Kessenich06a37c32013-11-11 20:31:45 +000091 dFdx(v[0]); // ERROR
92 dFdy(3.2); // ERROR
93 fwidth(f13); // ERROR
94}
95
96#extension GL_OES_standard_derivatives : enable
97
98void foo236()
99{
100 dFdx(v[0]);
101 dFdy(3.2);
102 fwidth(f13);
John Kessenich99296362013-11-11 20:51:50 +0000103 gl_FragDepth = f13; // ERROR
104 gl_FragDepthEXT = f13; // ERROR
John Kessenich115a0ad2013-11-11 18:50:06 +0000105}
John Kessenich99296362013-11-11 20:51:50 +0000106
107#extension GL_EXT_frag_depth : enable
108
109void foo239()
110{
111 gl_FragDepth = f13; // ERROR
112 gl_FragDepthEXT = f13;
John Kessenichbd1a5b72013-11-11 23:29:59 +0000113}
114
115#extension GL_OES_EGL_image_external : enable
116
117uniform samplerExternalOES sExt;
118
119void foo245()
120{
121 texture2D(sExt, vec2(0.2));
122 texture2DProj(sExt, vec3(f13));
123 texture2DProj(sExt, v[2]);
124}
125
126precision mediump samplerExternalOES;
127uniform samplerExternalOES mediumExt;
128uniform highp samplerExternalOES highExt;
129
130void foo246()
131{
132 texture2D(mediumExt, vec2(0.2));
133 texture2DProj(highExt, v[2]);
134 texture3D(sExt, vec3(f13)); // ERROR
135 texture2DProjLod(sExt, vec3(f13), f13); // ERROR
John Kessenich67c9f3a2013-11-12 01:02:51 +0000136 int a;
137 ~a; // ERROR
138 a | a; // ERROR
139 a & a; // ERROR
John Kessenichbd1a5b72013-11-11 23:29:59 +0000140}
141
142#extension GL_OES_EGL_image_external : disable
John Kessenichad43f6f2013-11-22 17:30:34 +0000143uniform sampler2D s2Dg;
John Kessenichbd1a5b72013-11-11 23:29:59 +0000144
John Kessenich67c9f3a2013-11-12 01:02:51 +0000145int foo203940(int a, float b, float a) // ERROR, a redefined
146{
John Kessenichad43f6f2013-11-22 17:30:34 +0000147 texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2); // ERROR, extension not enabled
John Kessenich67c9f3a2013-11-12 01:02:51 +0000148 return a;
149}
150
John Kessenich69aa9c12013-11-12 03:31:24 +0000151float f123 = 4.0f; // ERROR
152float f124 = 5e10F; // ERROR
153
John Kessenichad43f6f2013-11-22 17:30:34 +0000154#extension GL_EXT_shader_texture_lod : enable
155
156uniform samplerCube sCube;
157
158void foo323433()
159{
160 texture2DLodEXT(s2Dg, uv2, f13);
161 texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2);
162 texture2DGradEXT(s2Dg, uv2, uv2, uv2);
163 textureCubeGradEXT(sCube, vec3(f13), vec3(f13), vec3(f13));
164}
165
John Kessenich143c8bf2013-12-03 21:04:03 +0000166int fgfg(float f, mediump int i);
John Kessenichb88c60b2013-12-04 19:43:05 +0000167int fgfg(float f, highp int i) { return 2; } // ERROR, precision qualifier difference
168
169int fffg(float f);
170int fffg(float f); // ERROR, can't have multiple prototypes
171
172int gggf(float f);
173int gggf(float f) { return 2; }
174
175int agggf(float f) { return 2; }
176int agggf(float f);
177int agggf(float f); // ERROR, second prototype
John Kessenich143c8bf2013-12-03 21:04:03 +0000178
John Kessenichafda2412013-12-04 20:41:33 +0000179varying struct SSS { float f; } s; // ERROR
180
John Kessenich974258d2014-05-27 01:34:38 +0000181int vf(void);
182int vf2();
183int vf3(void v); // ERROR
184int vf4(int, void); // ERROR
185int vf5(int, void v); // ERROR
186
187void badswizzle()
188{
189 vec3 a[5];
190 a.y; // ERROR, no array swizzle
191 a.zy; // ERROR, no array swizzle
192 a.nothing; // ERROR
193 a.length(); // ERROR, not this version
194 a.method(); // ERROR
195}
196
John Kessenich968c8f82015-04-30 03:22:41 +0000197float fooinit();
198
199float fooinittest()
200{
201 return fooinit();
202}
203
204// Test extra-function initializers
205const float fi1 = 3.0;
206const float fi2 = 4.0;
207const float fi3 = 5.0;
208
209float fooinit()
210{
211 return fi1 + fi2 + fi3; // should make a constant of 12.0
212}
213
214int init1 = gl_FrontFacing ? 1 : 2; // ERROR, non-const initializer
215
John Kessenich21f12862016-06-17 12:43:31 -0600216#ifdef GL_EXT_shader_non_constant_global_initializers
217#extension GL_EXT_shader_non_constant_global_initializers : enable
218#endif
219
220int init2 = gl_FrontFacing ? 1 : 2;
221
John Kessenichf0fce802014-10-08 21:29:29 +0000222#pragma STDGL invariant(all)
223
John Kessenich2b20dcb2014-12-20 07:03:18 +0000224#line 3000
225#error line of this error should be 3000
226
John Kessenichbd1a5b72013-11-11 23:29:59 +0000227uniform samplerExternalOES badExt; // syntax ERROR