From ef84d10e4c99d9cb7b4cedc65e777462283a627e Mon Sep 17 00:00:00 2001 From: John Kessenich <cepheus@frii.com> Date: Tue, 25 Jun 2013 21:53:59 +0000 Subject: [PATCH] Add semantic check for precision qualifier on wrong kind of type. Added a few more tests. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22170 e7fa87d3-cd2b-0410-9028-fcbf551c1848 --- Test/120.frag | 16 ++++++++++++++++ Test/array.frag | 2 ++ Test/precision.frag | 6 ++++++ glslang/MachineIndependent/ParseHelper.cpp | 3 ++- 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Test/120.frag b/Test/120.frag index 89f88747a..58a1c39fe 100644 --- a/Test/120.frag +++ b/Test/120.frag @@ -78,7 +78,23 @@ void main() bool b; gl_FragColor += b ? v : m; // ERROR, types don't match around ":" } + + gl_FragColor.xr; // ERROR, swizzlers not from same field space + centTexCoord.z; // ERROR, swizzler out of range + (a,b) = true; // ERROR, not an l-value } float imageBuffer; float uimage2DRect; + +int main() {} // ERROR +void main(int a) {} // ERROR + +const int a; // ERROR + +int foo(in float a); +int foo(out float a) // ERROR +{ + return 3.2; // ERROR + foo(a); // ERROR +} diff --git a/Test/array.frag b/Test/array.frag index 090d353da..6bf313d03 100644 --- a/Test/array.frag +++ b/Test/array.frag @@ -54,4 +54,6 @@ void main() const int ca3[3] = int[](3, 2); // ERROR int ica[] = int[](3, 2); int ica3[3] = int[](3, 2); // ERROR + ica[3.1] = 3; // ERROR + ica[u[1]] = 4; // ERROR } diff --git a/Test/precision.frag b/Test/precision.frag index 1f695c730..0531322e0 100644 --- a/Test/precision.frag +++ b/Test/precision.frag @@ -68,3 +68,9 @@ void main() 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 diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index b549953ce..3a3b31af1 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -891,7 +891,8 @@ void TParseContext::precisionQualifierCheck(int line, TPublicType& publicType) if (publicType.basicType == EbtFloat || publicType.basicType == EbtUint || publicType.basicType == EbtInt || publicType.basicType == EbtSampler) { if (publicType.qualifier.precision == EpqNone) error(line, "type requires declaration of default precision qualifier", TType::getBasicString(publicType.basicType), ""); - } + } else if (publicType.qualifier.precision != EpqNone) + error(line, "type cannot have precision qualifier", TType::getBasicString(publicType.basicType), ""); } void TParseContext::parameterSamplerCheck(int line, TStorageQualifier qualifier, const TType& type) -- GitLab