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:
@@ -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).
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user