glcpp: Only warn for macro names containing __
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 18 Feb 2014 17:10:36 +0000 (09:10 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 19 Feb 2014 23:08:50 +0000 (15:08 -0800)
commit0bd78926304e72ef3566e977d0cb5a959d86b809
tree75daeee0ecf30780f93aeff5513377c1961e9008
parenta4c734297f890eb7034793428ee20c28eaad5a69
glcpp: Only warn for macro names containing __

Section 3.3 (Preprocessor) of the GLSL 1.30 spec (and later) and the
GLSL ES spec (all versions) say:

    "All macro names containing two consecutive underscores ( __ ) are
    reserved for future use as predefined macro names. All macro names
    prefixed with "GL_" ("GL" followed by a single underscore) are also
    reserved."

The intention is that names containing __ are reserved for internal use
by the implementation, and names prefixed with GL_ are reserved for use
by Khronos.  Since every extension adds a name prefixed with GL_ (i.e.,
the name of the extension), that should be an error.  Names simply
containing __ are dangerous to use, but should be allowed.  In similar
cases, the C++ preprocessor specification says, "no diagnostic is
required."

Per the Khronos bug mentioned below, a future version of the GLSL
specification will clarify this.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Cc: "9.2 10.0 10.1" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Tested-by: Darius Spitznagel <d.spitznagel@goodbytez.de>
Cc: Tapani Pälli <lemody@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71870
Bugzilla: Khronos #11702
src/glsl/glcpp/glcpp-parse.y
src/glsl/glcpp/tests/086-reserved-macro-names.c.expected