mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-27 10:08:13 +02:00
Here is some additional stress testing of nested macros where the expansion of macros involves commas, (and whether those commas are interpreted as argument separators or not in subsequent function-like macro calls). Credit to the GCC documentation that directed my attention toward this issue: https://gcc.gnu.org/onlinedocs/gcc-3.2/cpp/Argument-Prescan.html Fixing the bug required only removing code from glcpp. When first testing the details of expansions involving commas, I had come to the mistaken conclusion that an expanded comma should never be treated as an argument separator, (so had introduced the rather ugly COMMA_FINAL token to represent this). In fact, an expanded comma should be treated as a separator, (as tested here), and this treatment can be avoided by judicious use of parentheses (as also tested here). With this simple removal of the COMMA_FINAL token, the behavior of glcpp matches that of gcc's preprocessor for all of these hairy cases. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
26 lines
201 B
Text
26 lines
201 B
Text
0:12(21): preprocessor error: Error: macro foo invoked with 2 arguments (expected 1)
|
|
|
|
|
|
|
|
|
|
(two,words)
|
|
|
|
|
|
|
|
|
|
(two separate words)
|
|
|
|
|
|
|
|
foo(two,words)
|
|
|
|
|
|
|
|
((two,words))
|
|
|
|
|
|
|
|
((two,words))
|
|
(((two,words)))
|
|
|
|
|