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
|
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
|
non-whitespace token will result in a parse error, (where it should be
|
||||||
passed through as is).
|
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.
|
|
@@ -4012,8 +4012,8 @@ _define_object_macro (glcpp_parser_t *parser,
|
|||||||
talloc_free (macro);
|
talloc_free (macro);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
glcpp_warning (loc, parser, "Redefinition of macro %s\n",
|
glcpp_error (loc, parser, "Redefinition of macro %s\n",
|
||||||
identifier);
|
identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
hash_table_insert (parser->defines, macro, identifier);
|
hash_table_insert (parser->defines, macro, identifier);
|
||||||
@@ -4043,8 +4043,8 @@ _define_function_macro (glcpp_parser_t *parser,
|
|||||||
talloc_free (macro);
|
talloc_free (macro);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
glcpp_warning (loc, parser, "Redefinition of macro %s\n",
|
glcpp_error (loc, parser, "Redefinition of macro %s\n",
|
||||||
identifier);
|
identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
hash_table_insert (parser->defines, macro, identifier);
|
hash_table_insert (parser->defines, macro, identifier);
|
||||||
|
@@ -1687,8 +1687,8 @@ _define_object_macro (glcpp_parser_t *parser,
|
|||||||
talloc_free (macro);
|
talloc_free (macro);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
glcpp_warning (loc, parser, "Redefinition of macro %s\n",
|
glcpp_error (loc, parser, "Redefinition of macro %s\n",
|
||||||
identifier);
|
identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
hash_table_insert (parser->defines, macro, identifier);
|
hash_table_insert (parser->defines, macro, identifier);
|
||||||
@@ -1718,8 +1718,8 @@ _define_function_macro (glcpp_parser_t *parser,
|
|||||||
talloc_free (macro);
|
talloc_free (macro);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
glcpp_warning (loc, parser, "Redefinition of macro %s\n",
|
glcpp_error (loc, parser, "Redefinition of macro %s\n",
|
||||||
identifier);
|
identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
hash_table_insert (parser->defines, macro, 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