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
This commit is contained in:
John Kessenich 2013-06-25 21:53:59 +00:00
parent d3f85891a7
commit ef84d10e4c
4 changed files with 26 additions and 1 deletions

View File

@ -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
}

View File

@ -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
}

View File

@ -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

View File

@ -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)