From 2a18d1950c84c96d263cc8f15434502e03aeb1dc Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Sat, 29 Jan 2011 08:19:39 +1000 Subject: [PATCH] Revert "glcpp: Demote "macro redefined" from an error to a warning" This reverts commit d3df641f0aba99b0b65ecd4d9b06798bca090a29. The original commit had sat unpushed on my machine for months. By the time I found it again, I had forgotten that we had decided not to use this change after all, (the relevant test was removed long ago). --- src/glsl/glcpp/README | 25 +------------------ src/glsl/glcpp/glcpp-parse.c | 8 +++--- src/glsl/glcpp/glcpp-parse.y | 8 +++--- .../tests/089-redefine-macro-error.c.expected | 12 ++++----- 4 files changed, 15 insertions(+), 38 deletions(-) diff --git a/src/glsl/glcpp/README b/src/glsl/glcpp/README index 9cc00e92750..0b5ef508ce9 100644 --- a/src/glsl/glcpp/README +++ b/src/glsl/glcpp/README @@ -29,27 +29,4 @@ The __LINE__ and __FILE__ macros are not yet supported. A file that ends with a function-like macro name as the last non-whitespace token will result in a parse error, (where it should be -passed through as is). - -Known deviations from the specification ---------------------------------------- -As mentoned above, the GLSL specification (as of 1.30.10) is fairly -vague on some aspects of the preprocessor, and we've been using C99 to -fill in details. Here is a list of cases where we have deviated from -the behavior specified in C99 to obtain better compatibility with -other GLSL implementations: - - * Redefining a macro with a different value - - C89 says that a macro "may be redefined ... provided that the - second definition [is equivalent]" (Section 3.8.3 Macro - Replacement/constraints) - - C99 is even more explicit, saying tthat a macro "shall not be - redefined by another #define preprocessing directive unless the - second definition [is equivalent]" (Section 6.10.3 Macro - Replacement/Constraints) - - In spite of this, glcpp emits a warning rather than an error for - non-equivalent redefinition of macros since this matches the - behavior of other, widely-used implementations. +passed through as is). \ No newline at end of file diff --git a/src/glsl/glcpp/glcpp-parse.c b/src/glsl/glcpp/glcpp-parse.c index 2bf96e035e1..8567bda1e5d 100644 --- a/src/glsl/glcpp/glcpp-parse.c +++ b/src/glsl/glcpp/glcpp-parse.c @@ -4012,8 +4012,8 @@ _define_object_macro (glcpp_parser_t *parser, talloc_free (macro); return; } - glcpp_warning (loc, parser, "Redefinition of macro %s\n", - identifier); + glcpp_error (loc, parser, "Redefinition of macro %s\n", + identifier); } hash_table_insert (parser->defines, macro, identifier); @@ -4043,8 +4043,8 @@ _define_function_macro (glcpp_parser_t *parser, talloc_free (macro); return; } - glcpp_warning (loc, parser, "Redefinition of macro %s\n", - identifier); + glcpp_error (loc, parser, "Redefinition of macro %s\n", + identifier); } hash_table_insert (parser->defines, macro, identifier); diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y index 797e614280b..b449eb288b8 100644 --- a/src/glsl/glcpp/glcpp-parse.y +++ b/src/glsl/glcpp/glcpp-parse.y @@ -1687,8 +1687,8 @@ _define_object_macro (glcpp_parser_t *parser, talloc_free (macro); return; } - glcpp_warning (loc, parser, "Redefinition of macro %s\n", - identifier); + glcpp_error (loc, parser, "Redefinition of macro %s\n", + identifier); } hash_table_insert (parser->defines, macro, identifier); @@ -1718,8 +1718,8 @@ _define_function_macro (glcpp_parser_t *parser, talloc_free (macro); return; } - glcpp_warning (loc, parser, "Redefinition of macro %s\n", - identifier); + glcpp_error (loc, parser, "Redefinition of macro %s\n", + identifier); } hash_table_insert (parser->defines, macro, identifier); diff --git a/src/glsl/glcpp/tests/089-redefine-macro-error.c.expected b/src/glsl/glcpp/tests/089-redefine-macro-error.c.expected index 4c92e1dd4a6..6209ead559e 100644 --- a/src/glsl/glcpp/tests/089-redefine-macro-error.c.expected +++ b/src/glsl/glcpp/tests/089-redefine-macro-error.c.expected @@ -1,14 +1,14 @@ -0:2(9): preprocessor warning: Redefinition of macro x +0:2(9): preprocessor error: Redefinition of macro x -0:5(9): preprocessor warning: Redefinition of macro abc +0:5(9): preprocessor error: Redefinition of macro abc -0:8(9): preprocessor warning: Redefinition of macro foo +0:8(9): preprocessor error: Redefinition of macro foo -0:11(9): preprocessor warning: Redefinition of macro bar +0:11(9): preprocessor error: Redefinition of macro bar -0:14(9): preprocessor warning: Redefinition of macro biff +0:14(9): preprocessor error: Redefinition of macro biff -0:17(9): preprocessor warning: Redefinition of macro oper +0:17(9): preprocessor error: Redefinition of macro oper -- 2.30.2