Fix bug (and add tests) for a function-like macro defined as itself.
authorCarl Worth <cworth@cworth.org>
Wed, 19 May 2010 14:29:22 +0000 (07:29 -0700)
committerCarl Worth <cworth@cworth.org>
Wed, 19 May 2010 14:29:22 +0000 (07:29 -0700)
commitbe0e2e9b2ada51be66afb6b44330acb44e0261f2
tree4795965a9dce8645680f2f0aa423f035d27eebd1
parenta807fb72c45888b5ff915aa08d8bd10069be4a2e
Fix bug (and add tests) for a function-like macro defined as itself.

This case worked previously, but broke in the recent rewrite of
function- like macro expansion. The recursion was still terminated
correctly, but any parenthesized expression after the macro name was
still being swallowed even though the identifier was not being
expanded as a macro.

The fix is to notice earlier that the identifier is an
already-expanding macro. We let the lexer know this through the
classify_token function so that an already-expanding macro is lexed as
an identifier, not a FUNC_MACRO.
glcpp-parse.y
tests/032-define-func-self-recurse.c [new file with mode: 0644]
tests/033-define-func-self-compose.c [new file with mode: 0644]