1617a3babSopenharmony_ci// okay 2617a3babSopenharmony_ci#version 100 3617a3babSopenharmony_ciint a[3] = { 2, 3, 4, }; // ERROR (lots) 4617a3babSopenharmony_ci#version 100 5617a3babSopenharmony_ciint uint; 6617a3babSopenharmony_ci 7617a3babSopenharmony_ciattribute vec4 v[3]; // ERROR 8617a3babSopenharmony_ci 9617a3babSopenharmony_cifloat f = 2; // ERROR 10617a3babSopenharmony_ci 11617a3babSopenharmony_ciuniform block { // ERROR 12617a3babSopenharmony_ci int x; 13617a3babSopenharmony_ci}; 14617a3babSopenharmony_ci 15617a3babSopenharmony_civoid foo(float); 16617a3babSopenharmony_ci 17617a3babSopenharmony_civoid main() 18617a3babSopenharmony_ci{ 19617a3babSopenharmony_ci foo(3); // ERROR 20617a3babSopenharmony_ci int s = 1 << 4; // ERROR 21617a3babSopenharmony_ci s = 16 >> 2; // ERROR 22617a3babSopenharmony_ci if (a == a); // ERROR 23617a3babSopenharmony_ci int b, c; 24617a3babSopenharmony_ci b = c & 4; // ERROR 25617a3babSopenharmony_ci b = c % 4; // ERROR 26617a3babSopenharmony_ci b = c | 4; // ERROR 27617a3babSopenharmony_ci b >>= 2; // ERROR 28617a3babSopenharmony_ci b <<= 2; // ERROR 29617a3babSopenharmony_ci b %= 3; // ERROR 30617a3babSopenharmony_ci 31617a3babSopenharmony_ci struct S { 32617a3babSopenharmony_ci float f; 33617a3babSopenharmony_ci float a[10]; 34617a3babSopenharmony_ci } s1, s2; 35617a3babSopenharmony_ci 36617a3babSopenharmony_ci s1 = s2; // ERROR 37617a3babSopenharmony_ci if (s1 == s2); // ERROR 38617a3babSopenharmony_ci if (s1 != s2); // ERROR 39617a3babSopenharmony_ci 40617a3babSopenharmony_ci switch(b) { // ERROR 41617a3babSopenharmony_ci } 42617a3babSopenharmony_ci} 43617a3babSopenharmony_ci 44617a3babSopenharmony_ciinvariant gl_FragColor; 45617a3babSopenharmony_cifloat fa[]; // ERROR 46617a3babSopenharmony_cifloat f13; 47617a3babSopenharmony_ciinvariant f13; // ERROR 48617a3babSopenharmony_cistruct S { int a; }; 49617a3babSopenharmony_ciinvariant S; // ERROR, not an input or output 50617a3babSopenharmony_ciinvariant float fi; // ERROR 51617a3babSopenharmony_civarying vec4 av; 52617a3babSopenharmony_ciinvariant av; // okay in v100 53617a3babSopenharmony_ci 54617a3babSopenharmony_civoid foo10() 55617a3babSopenharmony_ci{ 56617a3babSopenharmony_ci invariant f; // ERROR 57617a3babSopenharmony_ci invariant float f2; // ERROR 58617a3babSopenharmony_ci float f3; 59617a3babSopenharmony_ci invariant f3; // ERROR 60617a3babSopenharmony_ci} 61617a3babSopenharmony_ci 62617a3babSopenharmony_ciuniform vec2 uv2; 63617a3babSopenharmony_ciinvariant uv2; // ERROR 64617a3babSopenharmony_ciinvariant uniform vec3 uv3; // ERROR 65617a3babSopenharmony_ci 66617a3babSopenharmony_cisampler2D glob2D; // ERROR 67617a3babSopenharmony_civoid f11(sampler2D p2d) 68617a3babSopenharmony_ci{ 69617a3babSopenharmony_ci sampler2D v2D; // ERROR 70617a3babSopenharmony_ci} 71617a3babSopenharmony_civarying sampler2D vary2D; // ERROR 72617a3babSopenharmony_ci 73617a3babSopenharmony_cistruct sp { 74617a3babSopenharmony_ci highp float f; 75617a3babSopenharmony_ci in float g; // ERROR 76617a3babSopenharmony_ci uniform float h; // ERROR 77617a3babSopenharmony_ci invariant float i; // ERROR 78617a3babSopenharmony_ci}; 79617a3babSopenharmony_ci 80617a3babSopenharmony_ciuniform sampler3D s3D; // ERROR 81617a3babSopenharmony_ci 82617a3babSopenharmony_ci#extension GL_OES_texture_3D : enable 83617a3babSopenharmony_ci 84617a3babSopenharmony_ciprecision highp sampler3D; 85617a3babSopenharmony_ciuniform sampler3D s3D2; 86617a3babSopenharmony_ci 87617a3babSopenharmony_civoid foo234() 88617a3babSopenharmony_ci{ 89617a3babSopenharmony_ci texture3D(s3D2, vec3(0.2), 0.2); 90617a3babSopenharmony_ci texture3DProj(s3D2, v[1], 0.4); 91617a3babSopenharmony_ci dFdx(v[0]); // ERROR 92617a3babSopenharmony_ci dFdy(3.2); // ERROR 93617a3babSopenharmony_ci fwidth(f13); // ERROR 94617a3babSopenharmony_ci} 95617a3babSopenharmony_ci 96617a3babSopenharmony_ci#extension GL_OES_standard_derivatives : enable 97617a3babSopenharmony_ci 98617a3babSopenharmony_civoid foo236() 99617a3babSopenharmony_ci{ 100617a3babSopenharmony_ci dFdx(v[0]); 101617a3babSopenharmony_ci dFdy(3.2); 102617a3babSopenharmony_ci fwidth(f13); 103617a3babSopenharmony_ci gl_FragDepth = f13; // ERROR 104617a3babSopenharmony_ci gl_FragDepthEXT = f13; // ERROR 105617a3babSopenharmony_ci} 106617a3babSopenharmony_ci 107617a3babSopenharmony_ci#extension GL_EXT_frag_depth : enable 108617a3babSopenharmony_ci 109617a3babSopenharmony_civoid foo239() 110617a3babSopenharmony_ci{ 111617a3babSopenharmony_ci gl_FragDepth = f13; // ERROR 112617a3babSopenharmony_ci gl_FragDepthEXT = f13; 113617a3babSopenharmony_ci} 114617a3babSopenharmony_ci 115617a3babSopenharmony_ci#extension GL_OES_EGL_image_external : enable 116617a3babSopenharmony_ci 117617a3babSopenharmony_ciuniform samplerExternalOES sExt; 118617a3babSopenharmony_ci 119617a3babSopenharmony_civoid foo245() 120617a3babSopenharmony_ci{ 121617a3babSopenharmony_ci texture2D(sExt, vec2(0.2)); 122617a3babSopenharmony_ci texture2DProj(sExt, vec3(f13)); 123617a3babSopenharmony_ci texture2DProj(sExt, v[2]); 124617a3babSopenharmony_ci} 125617a3babSopenharmony_ci 126617a3babSopenharmony_ciprecision mediump samplerExternalOES; 127617a3babSopenharmony_ciuniform samplerExternalOES mediumExt; 128617a3babSopenharmony_ciuniform highp samplerExternalOES highExt; 129617a3babSopenharmony_ci 130617a3babSopenharmony_civoid foo246() 131617a3babSopenharmony_ci{ 132617a3babSopenharmony_ci texture2D(mediumExt, vec2(0.2)); 133617a3babSopenharmony_ci texture2DProj(highExt, v[2]); 134617a3babSopenharmony_ci texture3D(sExt, vec3(f13)); // ERROR 135617a3babSopenharmony_ci texture2DProjLod(sExt, vec3(f13), f13); // ERROR 136617a3babSopenharmony_ci int a; 137617a3babSopenharmony_ci ~a; // ERROR 138617a3babSopenharmony_ci a | a; // ERROR 139617a3babSopenharmony_ci a & a; // ERROR 140617a3babSopenharmony_ci} 141617a3babSopenharmony_ci 142617a3babSopenharmony_ci#extension GL_OES_EGL_image_external : disable 143617a3babSopenharmony_ciuniform sampler2D s2Dg; 144617a3babSopenharmony_ci 145617a3babSopenharmony_ciint foo203940(int a, float b, float a) // ERROR, a redefined 146617a3babSopenharmony_ci{ 147617a3babSopenharmony_ci texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2); // ERROR, extension not enabled 148617a3babSopenharmony_ci return a; 149617a3babSopenharmony_ci} 150617a3babSopenharmony_ci 151617a3babSopenharmony_cifloat f123 = 4.0f; // ERROR 152617a3babSopenharmony_cifloat f124 = 5e10F; // ERROR 153617a3babSopenharmony_ci 154617a3babSopenharmony_ci#extension GL_EXT_shader_texture_lod : enable 155617a3babSopenharmony_ci 156617a3babSopenharmony_ciuniform samplerCube sCube; 157617a3babSopenharmony_ci 158617a3babSopenharmony_civoid foo323433() 159617a3babSopenharmony_ci{ 160617a3babSopenharmony_ci texture2DLodEXT(s2Dg, uv2, f13); 161617a3babSopenharmony_ci texture2DProjGradEXT(s2Dg, vec3(f13), uv2, uv2); 162617a3babSopenharmony_ci texture2DGradEXT(s2Dg, uv2, uv2, uv2); 163617a3babSopenharmony_ci textureCubeGradEXT(sCube, vec3(f13), vec3(f13), vec3(f13)); 164617a3babSopenharmony_ci} 165617a3babSopenharmony_ci 166617a3babSopenharmony_ciint fgfg(float f, mediump int i); 167617a3babSopenharmony_ciint fgfg(float f, highp int i) { return 2; } // ERROR, precision qualifier difference 168617a3babSopenharmony_ci 169617a3babSopenharmony_ciint fffg(float f); 170617a3babSopenharmony_ciint fffg(float f); // ERROR, can't have multiple prototypes 171617a3babSopenharmony_ci 172617a3babSopenharmony_ciint gggf(float f); 173617a3babSopenharmony_ciint gggf(float f) { return 2; } 174617a3babSopenharmony_ci 175617a3babSopenharmony_ciint agggf(float f) { return 2; } 176617a3babSopenharmony_ciint agggf(float f); 177617a3babSopenharmony_ciint agggf(float f); // ERROR, second prototype 178617a3babSopenharmony_ci 179617a3babSopenharmony_civarying struct SSS { float f; } s; // ERROR 180617a3babSopenharmony_ci 181617a3babSopenharmony_ciint vf(void); 182617a3babSopenharmony_ciint vf2(); 183617a3babSopenharmony_ciint vf3(void v); // ERROR 184617a3babSopenharmony_ciint vf4(int, void); // ERROR 185617a3babSopenharmony_ciint vf5(int, void v); // ERROR 186617a3babSopenharmony_ci 187617a3babSopenharmony_civoid badswizzle() 188617a3babSopenharmony_ci{ 189617a3babSopenharmony_ci vec3 a[5]; 190617a3babSopenharmony_ci a.y; // ERROR, no array swizzle 191617a3babSopenharmony_ci a.zy; // ERROR, no array swizzle 192617a3babSopenharmony_ci a.nothing; // ERROR 193617a3babSopenharmony_ci a.length(); // ERROR, not this version 194617a3babSopenharmony_ci a.method(); // ERROR 195617a3babSopenharmony_ci} 196617a3babSopenharmony_ci 197617a3babSopenharmony_cifloat fooinit(); 198617a3babSopenharmony_ci 199617a3babSopenharmony_cifloat fooinittest() 200617a3babSopenharmony_ci{ 201617a3babSopenharmony_ci return fooinit(); 202617a3babSopenharmony_ci} 203617a3babSopenharmony_ci 204617a3babSopenharmony_ci// Test extension GL_EXT_blend_func_extended 205617a3babSopenharmony_civoid blendFuncFail() // Error since extension GL_EXT_blend_func_extended is disabled 206617a3babSopenharmony_ci{ 207617a3babSopenharmony_ci gl_SecondaryFragColorEXT = vec4(1.0); 208617a3babSopenharmony_ci gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT - 1] = vec4(0.1); 209617a3babSopenharmony_ci} 210617a3babSopenharmony_ci#extension GL_EXT_blend_func_extended : enable 211617a3babSopenharmony_civoid blendFunc() 212617a3babSopenharmony_ci{ 213617a3babSopenharmony_ci gl_SecondaryFragColorEXT = vec4(1.0); 214617a3babSopenharmony_ci gl_SecondaryFragDataEXT[gl_MaxDualSourceDrawBuffersEXT - 1] = vec4(0.1); 215617a3babSopenharmony_ci} 216617a3babSopenharmony_ci 217617a3babSopenharmony_ci// Test extra-function initializers 218617a3babSopenharmony_ciconst float fi1 = 3.0; 219617a3babSopenharmony_ciconst float fi2 = 4.0; 220617a3babSopenharmony_ciconst float fi3 = 5.0; 221617a3babSopenharmony_ci 222617a3babSopenharmony_cifloat fooinit() 223617a3babSopenharmony_ci{ 224617a3babSopenharmony_ci return fi1 + fi2 + fi3; // should make a constant of 12.0 225617a3babSopenharmony_ci} 226617a3babSopenharmony_ci 227617a3babSopenharmony_ciint init1 = gl_FrontFacing ? 1 : 2; // ERROR, non-const initializer 228617a3babSopenharmony_ci 229617a3babSopenharmony_ci#ifdef GL_EXT_shader_non_constant_global_initializers 230617a3babSopenharmony_ci#extension GL_EXT_shader_non_constant_global_initializers : enable 231617a3babSopenharmony_ci#endif 232617a3babSopenharmony_ci 233617a3babSopenharmony_ciint init2 = gl_FrontFacing ? 1 : 2; 234617a3babSopenharmony_ci 235617a3babSopenharmony_ci#define A__B // error 236617a3babSopenharmony_ciint a__b; // error 237617a3babSopenharmony_ci 238617a3babSopenharmony_ci#pragma STDGL invariant(all) 239617a3babSopenharmony_ci 240617a3babSopenharmony_ci#line 3000 241617a3babSopenharmony_ci#error line of this error should be 3000 242617a3babSopenharmony_ci 243617a3babSopenharmony_ciuniform samplerExternalOES badExt; // syntax ERROR 244