Merge pull request #60 from xorgy/no-define-defined

Preprocessor:  'defined' cannot be used as a macro name in #define or #undef.
This commit is contained in:
John Kessenich 2015-09-09 15:45:23 -06:00
Родитель ebb7bf37fd 7d3b73bfff
Коммит 68e1c454da
5 изменённых файлов: 9 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,4 @@
ERROR: 0:2: '#define' : "defined" can't be (un)defined: defined
ERROR: 1 compilation errors. No code generated.

Просмотреть файл

Просмотреть файл

@ -0,0 +1,2 @@
#define defined_not_really
#define defined // ERROR: "defined" can't be (un)defined:

Просмотреть файл

@ -11,3 +11,4 @@ preprocessor.line.frag
preprocessor.pragma.vert
preprocessor.simple.vert
preprocessor.success_if_parse_would_fail.vert
preprocessor.defined.vert

Просмотреть файл

@ -2063,6 +2063,8 @@ void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* iden
// however, before that, ES tests required an error.
if (strncmp(identifier, "GL_", 3) == 0)
ppError(loc, "names beginning with \"GL_\" can't be (un)defined:", op, identifier);
else if (strncmp(identifier, "defined", 8) == 0)
ppError(loc, "\"defined\" can't be (un)defined:", op, identifier);
else if (strstr(identifier, "__") != 0) {
if (profile == EEsProfile && version >= 300 &&
(strcmp(identifier, "__LINE__") == 0 ||