Mesa (master): glcpp: Raise error if defining any macro containing two consecutive underscores

Carl Worth cworth at kemper.freedesktop.org
Fri Sep 30 18:44:34 UTC 2011


Module: Mesa
Branch: master
Commit: c4aaf7943c2cdff0e2148b5c05813356dc99696d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c4aaf7943c2cdff0e2148b5c05813356dc99696d

Author: Carl Worth <cworth at cworth.org>
Date:   Thu Sep 29 21:44:52 2011 -0700

glcpp: Raise error if defining any macro containing two consecutive underscores

The specification reserves any macro name containing two consecutive
underscores, (anywhere within the name). Previously, we only raised
this error for macro names that started with two underscores.

Fix the implementation to check for two underscores anywhere, and also
update the corresponding 086-reserved-macro-names test.

This also fixes the following two piglit tests:

	spec/glsl-1.30/preprocessor/reserved/double-underscore-02.frag
	spec/glsl-1.30/preprocessor/reserved/double-underscore-03.frag

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Eric Anholt <eric at anholt.net>
Signed-off-by: Carl Worth <cworth at cworth.org>

---

 src/glsl/glcpp/glcpp-parse.y                       |    4 ++--
 src/glsl/glcpp/tests/086-reserved-macro-names.c    |    1 +
 .../tests/086-reserved-macro-names.c.expected      |    5 ++++-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
index ff9fa7a..17941a9 100644
--- a/src/glsl/glcpp/glcpp-parse.y
+++ b/src/glsl/glcpp/glcpp-parse.y
@@ -1663,8 +1663,8 @@ _check_for_reserved_macro_name (glcpp_parser_t *parser, YYLTYPE *loc,
 	/* According to the GLSL specification, macro names starting with "__"
 	 * or "GL_" are reserved for future use.  So, don't allow them.
 	 */
-	if (strncmp(identifier, "__", 2) == 0) {
-		glcpp_error (loc, parser, "Macro names starting with \"__\" are reserved.\n");
+	if (strstr(identifier, "__")) {
+		glcpp_error (loc, parser, "Macro names containing \"__\" are reserved.\n");
 	}
 	if (strncmp(identifier, "GL_", 3) == 0) {
 		glcpp_error (loc, parser, "Macro names starting with \"GL_\" are reserved.\n");
diff --git a/src/glsl/glcpp/tests/086-reserved-macro-names.c b/src/glsl/glcpp/tests/086-reserved-macro-names.c
index fd0c29f..a6b7201 100644
--- a/src/glsl/glcpp/tests/086-reserved-macro-names.c
+++ b/src/glsl/glcpp/tests/086-reserved-macro-names.c
@@ -1,2 +1,3 @@
 #define __BAD reserved
 #define GL_ALSO_BAD() also reserved
+#define THIS__TOO__IS__BAD reserved
diff --git a/src/glsl/glcpp/tests/086-reserved-macro-names.c.expected b/src/glsl/glcpp/tests/086-reserved-macro-names.c.expected
index 6a9df68..d8aa9f0 100644
--- a/src/glsl/glcpp/tests/086-reserved-macro-names.c.expected
+++ b/src/glsl/glcpp/tests/086-reserved-macro-names.c.expected
@@ -1,7 +1,10 @@
-0:1(10): preprocessor error: Macro names starting with "__" are reserved.
+0:1(10): preprocessor error: Macro names containing "__" are reserved.
 
 0:2(9): preprocessor error: Macro names starting with "GL_" are reserved.
 
+0:3(9): preprocessor error: Macro names containing "__" are reserved.
+
+
 
 
 




More information about the mesa-commit mailing list