From: Carl Worth Date: Thu, 13 May 2010 19:58:49 +0000 (-0700) Subject: Fix case of a macro formal parameter matching a defined macro. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7f9aa36bbcf457e1a221ab6447de3bec30908000;p=mesa.git Fix case of a macro formal parameter matching a defined macro. Simply need to allow for a macro name to appear in the parameter list. This makes the recently-added test pass. --- diff --git a/glcpp-parse.y b/glcpp-parse.y index 4b4a754f82b..1b6c939a269 100644 --- a/glcpp-parse.y +++ b/glcpp-parse.y @@ -93,7 +93,7 @@ _list_length (list_t *list); %lex-param {void *scanner} %token DEFINE FUNC_MACRO IDENTIFIER NEWLINE OBJ_MACRO SPACE TOKEN UNDEF -%type FUNC_MACRO IDENTIFIER OBJ_MACRO TOKEN word word_or_symbol +%type FUNC_MACRO IDENTIFIER identifier_perhaps_macro OBJ_MACRO TOKEN word word_or_symbol %type argument argument_list parameter_list replacement_list %% @@ -215,18 +215,24 @@ parameter_list: /* empty */ { $$ = _list_create (parser); } -| IDENTIFIER { +| identifier_perhaps_macro { $$ = _list_create (parser); _list_append_item ($$, $1); talloc_free ($1); } -| parameter_list ',' IDENTIFIER { +| parameter_list ',' identifier_perhaps_macro { _list_append_item ($1, $3); talloc_free ($3); $$ = $1; } ; +identifier_perhaps_macro: + IDENTIFIER { $$ = $1; } +| FUNC_MACRO { $$ = $1; } +| OBJ_MACRO { $$ = $1; } +; + word_or_symbol: word { $$ = $1; } | '(' { $$ = xtalloc_strdup (parser, "("); }