Revert "glcpp: Demote "macro redefined" from an error to a warning"

This reverts commit d3df641f0a.

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).
This commit is contained in:
Carl Worth
2011-01-29 08:19:39 +10:00
parent 3451ee056c
commit 2a18d1950c
4 changed files with 15 additions and 38 deletions

View File

@@ -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).

View File

@@ -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);

View File

@@ -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);

View File

@@ -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