group unspecified_precision "Invalid declarations with unspecified precision"

	case float_partially_specified_fragment
		version 310 es
		expect compile_fail
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			void main() {}
		""
		fragment ""
			#version 310 es
			// no global precision qualifier (e.g. precision mediump float)
			void main() {
				mediump float x = 1.0;
				vec3 y = vec3(x);
				mediump vec4 z = vec4(y, x);
			}
		""
	end

	case float_fragment
		version 310 es
		expect compile_fail
		vertex ""
			#version 310 es
			void main() {}
		""
		fragment ""
			#version 310 es
			void main() { float v; }
		""
	end

	case vec2_fragment
		version 310 es
		expect compile_fail
		vertex ""
			#version 310 es
			void main() {}
		""
		fragment ""
			#version 310 es
			void main() { vec2 v; }
		""
	end

	case vec3_fragment
		version 310 es
		expect compile_fail
		vertex ""
			#version 310 es
			void main() {}
		""
		fragment ""
			#version 310 es
			void main() { vec3 v; }
		""
	end

	case vec4_fragment
		version 310 es
		expect compile_fail
		vertex ""
			#version 310 es
			void main() {}
		""
		fragment ""
			#version 310 es
			void main() { vec4 v; }
		""
	end

	case sampler3D
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform sampler3D samp;
			void main() {}
		""
	end

	case samplerCubeShadow
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform samplerCubeShadow samp;
			void main() {}
		""
	end

	case sampler2DShadow
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform sampler2DShadow samp;
			void main() {}
		""
	end

	case sampler2DArray
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform sampler2DArray samp;
			void main() {}
		""
	end

	case sampler2DArrayShadow
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform sampler2DArrayShadow samp;
			void main() {}
		""
	end

	case isampler2D
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform isampler2D samp;
			void main() {}
		""
	end

	case isampler3D
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform isampler3D samp;
			void main() {}
		""
	end

	case isamplerCube
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform isamplerCube samp;
			void main() {}
		""
	end

	case isampler2DArray
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform isampler2DArray samp;
			void main() {}
		""
	end

	case usampler2D
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform usampler2D samp;
			void main() {}
		""
	end

	case usampler3D
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform usampler3D samp;
			void main() {}
		""
	end

	case usamplerCube
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform usamplerCube samp;
			void main() {}
		""
	end

	case usampler2DArray
		version 310 es
		expect compile_fail
		both ""
			#version 310 es
			uniform usampler2DArray samp;
			void main() {}
		""
	end

end # unspecified_precision