In the yacc test I see warnings like this:

main.c:4:10: error: implicit declaration of function ‘yyparse’ 
[-Wimplicit-function-declaration]
    4 |   return yyparse ();
      |          ^~~~~~~

and some for yylex which is declared, but with an empty parameter list
instead of void.

I assume this is because GCC becoming more strict to conform with C23
requirements. I did these tests with GCC 14.1.

I have attached a patch fixing these tests on my system.

Collin

>From 615faf791ccc2aa744c61bd9f5982ebe225748d4 Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Fri, 7 Jun 2024 21:53:51 -0700
Subject: [PATCH] test: Accommodate C23 compilers.

* t/yacc-deleted-headers.sh: Declare yyparse before use.
* t/yacc-depend.sh: Likewise.
* t/yacc-mix-c-cxx.sh: Likewise.
* t/yacc-d-basic.sh: Likewise. Use void instead of empty parameter list.
* t/yacc-depend2.sh: Likewise.
---
 t/yacc-d-basic.sh         | 3 ++-
 t/yacc-deleted-headers.sh | 1 +
 t/yacc-depend.sh          | 1 +
 t/yacc-depend2.sh         | 3 ++-
 t/yacc-mix-c-cxx.sh       | 2 ++
 5 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/t/yacc-d-basic.sh b/t/yacc-d-basic.sh
index cc076148b..df3cfece1 100644
--- a/t/yacc-d-basic.sh
+++ b/t/yacc-d-basic.sh
@@ -49,7 +49,7 @@ cp foo/Makefile.am baz/Makefile.am
 cat > foo/parse.y << 'END'
 %{
 #include "parse.h"
-int yylex () { return 0; }
+int yylex (void) { return 0; }
 void yyerror (const char *s) {}
 %}
 %%
@@ -69,6 +69,7 @@ sed -e 's/parse\.h/y.tab.h/' <foo/parse.y >bar/parse.y
 
 cat > foo/main.c << 'END'
 #include "parse.h"
+extern int yyparse (void);
 int main ()
 {
   return yyparse ();
diff --git a/t/yacc-deleted-headers.sh b/t/yacc-deleted-headers.sh
index 81957eb86..682dd5f5d 100644
--- a/t/yacc-deleted-headers.sh
+++ b/t/yacc-deleted-headers.sh
@@ -68,6 +68,7 @@ END
 
 cat > main1.c << 'END'
 #include "parse1.h"
+extern int yyparse (void);
 int main (void)
 {
   return ZARDOZ + yyparse ();
diff --git a/t/yacc-depend.sh b/t/yacc-depend.sh
index e5ad6870c..1f67ecac4 100644
--- a/t/yacc-depend.sh
+++ b/t/yacc-depend.sh
@@ -48,6 +48,7 @@ END
 
 cat > main.c << 'END'
 #include "foo.h"
+extern int yyparse (void);
 int main(void)
 {
   return yyparse ();
diff --git a/t/yacc-depend2.sh b/t/yacc-depend2.sh
index f0529294e..896b86df4 100644
--- a/t/yacc-depend2.sh
+++ b/t/yacc-depend2.sh
@@ -43,7 +43,7 @@ END
 
 cat > foo.y << 'END'
 %{
-int yylex () { return 0; }
+int yylex (void) { return 0; }
 void yyerror (const char *s) {}
 %}
 %token TOKEN
@@ -54,6 +54,7 @@ END
 
 cat > main.c << 'END'
 #include "foo.h"
+extern int yyparse (void);
 int main(void)
 {
   return yyparse ();
diff --git a/t/yacc-mix-c-cxx.sh b/t/yacc-mix-c-cxx.sh
index d454fe244..021b4223d 100644
--- a/t/yacc-mix-c-cxx.sh
+++ b/t/yacc-mix-c-cxx.sh
@@ -71,6 +71,7 @@ END
 
 cat > 1.c <<'END'
 #include "p.h"
+extern int yyparse (void);
 int main ()
 {
     int new = ZARDOZ;
@@ -80,6 +81,7 @@ int main ()
 END
 
 cat > 2.c <<'END'
+extern int yyparse (void);
 int main ()
 {
     int yyparse ();
-- 
2.45.2

Reply via email to