commit 41fddc064ded5c9a36d8ffaad59a85407a22a535 Author: Andrea Monaco Date: Sun Dec 12 10:24:28 2021 +0100 intl/plural.y: Avoid conflicting declarations of yyerror and yylex bison-3.8 includes these lines in the generated intl/plural.c: #if !defined __gettexterror && !defined YYERROR_IS_DECLARED void __gettexterror (struct parse_args *arg, const char *msg); #endif #if !defined __gettextlex && !defined YYLEX_IS_DECLARED int __gettextlex (YYSTYPE *yylvalp, struct parse_args *arg); #endif Those default prototypes provided by bison conflict with the declarations later on in plural.y. This patch solves the issue. Reviewed-by: Arjun Shankar (cherry picked from commit c6d7d6312c21bbcfb236d48bb7c11cedb234389f) diff --git a/intl/plural.y b/intl/plural.y index e02e74541c4574eb..2ee128ba01b5820d 100644 --- a/intl/plural.y +++ b/intl/plural.y @@ -40,6 +40,11 @@ # define __gettextparse PLURAL_PARSE #endif +/* Later we provide those prototypes. Without these macros, bison may + generate its own prototypes with possible conflicts. */ +#define YYLEX_IS_DECLARED +#define YYERROR_IS_DECLARED + %} %parse-param {struct parse_args *arg} %lex-param {struct parse_args *arg}