mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 12:00:05 +00:00
Make double underscore "__" an error for ES 300, but a warning for 310.
The 310 spec (and desktop specs) have clarified this is a waring, not an error, but 300 tests still expect an error.
This commit is contained in:
parent
63cebdb4c2
commit
1189a7bc4a
@ -3,7 +3,7 @@
|
||||
int imax, imin;
|
||||
uint umax, umin;
|
||||
|
||||
vec3 x, y;
|
||||
vec3 x, y; // ERROR, needs default precision
|
||||
bvec3 bv;
|
||||
|
||||
uint uy;
|
||||
@ -67,5 +67,10 @@ void main()
|
||||
vec2 v18 = unpackHalf2x16(uy);
|
||||
|
||||
// not present
|
||||
noise2(v18);
|
||||
noise2(v18); // ERROR, not present
|
||||
|
||||
float t__; // ERROR, no __ until revision 310
|
||||
|
||||
// ERROR, no __ until revision 310
|
||||
#define __D
|
||||
}
|
||||
|
@ -231,3 +231,8 @@ in inb { // ERROR
|
||||
out outb { // ERROR
|
||||
int a;
|
||||
} outbi;
|
||||
|
||||
float t__; // ERROR, no __ until revision 310
|
||||
|
||||
// ERROR, no __ until revision 310
|
||||
#define __D
|
||||
|
@ -1,7 +1,9 @@
|
||||
300BuiltIns.frag
|
||||
ERROR: 0:6: 'float' : type requires declaration of default precision qualifier
|
||||
ERROR: 0:70: 'noise2' : no matching overloaded function found
|
||||
ERROR: 2 compilation errors. No code generated.
|
||||
ERROR: 0:72: 't__' : identifiers containing consecutive underscores ("__") are reserved, and an error if version <= 300
|
||||
ERROR: 0:75: '#define' : names containing consecutive underscores are reserved, and an error if version <= 300: __D
|
||||
ERROR: 4 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 300
|
||||
|
@ -74,6 +74,8 @@ ERROR: 0:221: 'assign' : can't read from writeonly object: wo
|
||||
ERROR: 0:222: '~' : can't read from writeonly object: wo
|
||||
ERROR: 0:227: 'input block' : not supported in this stage: compute
|
||||
ERROR: 0:231: 'output block' : not supported in this stage: compute
|
||||
WARNING: 0:235: 't__' : identifiers containing consecutive underscores ("__") are reserved
|
||||
WARNING: 0:238: '#define' : names containing consecutive underscores are reserved: __D
|
||||
ERROR: 74 compilation errors. No code generated.
|
||||
|
||||
|
||||
@ -483,6 +485,7 @@ ERROR: node is still EOpNull!
|
||||
0:? 'multio' (layout(column_major shared ) buffer block{layout(column_major shared ) readonly buffer highp int value, layout(column_major shared ) writeonly buffer implicitly-sized array of highp float values})
|
||||
0:? 'inbi' (in block{in highp int a})
|
||||
0:? 'outbi' (out block{out highp int a})
|
||||
0:? 't__' (global highp float)
|
||||
|
||||
|
||||
Linked compute stage:
|
||||
@ -894,4 +897,5 @@ ERROR: node is still EOpNull!
|
||||
0:? 'multio' (layout(column_major shared ) buffer block{layout(column_major shared ) readonly buffer highp int value, layout(column_major shared ) writeonly buffer implicitly-sized array of highp float values})
|
||||
0:? 'inbi' (in block{in highp int a})
|
||||
0:? 'outbi' (out block{out highp int a})
|
||||
0:? 't__' (global highp float)
|
||||
|
||||
|
@ -1788,24 +1788,32 @@ void TParseContext::reservedErrorCheck(TSourceLoc loc, const TString& identifier
|
||||
if (builtInName(identifier))
|
||||
error(loc, "identifiers starting with \"gl_\" are reserved", identifier.c_str(), "");
|
||||
|
||||
// "__" are not supposed to be an error. ES 310 (and desktop) added the clarification:
|
||||
// "In addition, all identifiers containing two consecutive underscores (__) are
|
||||
// reserved; using such a name does not itself result in an error, but may result
|
||||
// in undefined behavior."
|
||||
if (identifier.find("__") != TString::npos)
|
||||
// however, before that, ES tests required an error.
|
||||
if (identifier.find("__") != TString::npos) {
|
||||
if (profile == EEsProfile && version <= 300)
|
||||
error(loc, "identifiers containing consecutive underscores (\"__\") are reserved, and an error if version <= 300", identifier.c_str(), "");
|
||||
else
|
||||
warn(loc, "identifiers containing consecutive underscores (\"__\") are reserved", identifier.c_str(), "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Reserved errors for the preprocessor.
|
||||
//
|
||||
void TParseContext::reservedPpErrorCheck(TSourceLoc loc, const char* identifier, const char* op)
|
||||
{
|
||||
// "__" are not supposed to be an error. ES 310 (and desktop) added the clarification:
|
||||
// "All macro names containing two consecutive underscores ( __ ) are reserved;
|
||||
// defining such a name does not itself result in an error, but may result in
|
||||
// undefined behavior. All macro names prefixed with "GL_" ("GL" followed by a
|
||||
// single underscore) are also reserved, and defining such a name results in a
|
||||
// compile-time error."
|
||||
// however, before that, ES tests required an error.
|
||||
if (strncmp(identifier, "GL_", 3) == 0)
|
||||
error(loc, "names beginning with \"GL_\" can't be (un)defined:", op, identifier);
|
||||
else if (strstr(identifier, "__") != 0) {
|
||||
@ -1814,10 +1822,14 @@ void TParseContext::reservedPpErrorCheck(TSourceLoc loc, const char* identifier,
|
||||
strcmp(identifier, "__FILE__") == 0 ||
|
||||
strcmp(identifier, "__VERSION__") == 0))
|
||||
error(loc, "predefined names can't be (un)defined:", op, identifier);
|
||||
else {
|
||||
if (profile == EEsProfile && version <= 300)
|
||||
error(loc, "names containing consecutive underscores are reserved, and an error if version <= 300:", op, identifier);
|
||||
else
|
||||
warn(loc, "names containing consecutive underscores are reserved:", op, identifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// See if this version/profile allows use of the line-continuation character '\'.
|
||||
|
Loading…
Reference in New Issue
Block a user