Commit ef84d10e by John Kessenich

Add semantic check for precision qualifier on wrong kind of type. Added a few more tests.

parent d3f85891
......@@ -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
}
......@@ -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
}
......@@ -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
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment