#version 100 varying vec3 color; // ERRROR, there is no default qualifier for float lowp vec2 foo(mediump vec3 mv3) { highp vec4 hv4; return hv4.xy; } int global_medium; uniform lowp sampler2D samplerLow; uniform mediump sampler2D samplerMed; uniform highp sampler2D samplerHigh; precision highp int; precision highp ivec2; // ERROR precision mediump int[2]; // ERROR vec4 uint; // okay precision mediump vec4; // ERROR int global_high; void main() { lowp int sum = global_medium + global_high; gl_FragColor = vec4(color, 1.0); int level1_high; sum += level1_high; precision lowp int; int level1_low; sum += level1_low; // test maxing precisions of args to get precision of builtin lowp float arg1; mediump float arg2; lowp float d = distance(arg1, arg2); { int level2_low; sum += level2_low; precision highp int; int level2_high; sum += level2_high; do { if (true) { precision mediump int; int level4_medium; sum += level4_medium; } int level3_high; sum += level3_high; } while (true); int level2_high2; sum += level2_high2; } int level1_low3; sum += level1_low3; sum += 4 + ((ivec2(level1_low3) * ivec2(level1_high) + ivec2((/* comma operator */level1_low3, level1_high)))).x; texture2D(samplerLow, vec2(0.1, 0.2)); texture2D(samplerMed, vec2(0.1, 0.2)); texture2D(samplerHigh, vec2(0.1, 0.2)); } precision mediump bool; // ERROR //precision mediump struct { int a; } s; // ERROR struct s {int a;}; precision mediump s; // ERROR mediump bvec2 b2; // ERROR