From 10a53cae9993abae159abdc6a76e46f6aac120d1 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 2 Jun 2019 11:07:54 -0400 Subject: [PATCH] Un-break ecpg tests for Windows. Declaring a function "inline" still doesn't work with Windows compilers (C99? what's that?), unless the macro provided by pg_config.h is in-scope, which it is not in our ECPG test programs. So the workaround I tried to use in commit 7640f9312 doesn't work for Windows. Revert the change in printf_hack.h, and instead just blacklist that file in cpluspluscheck --- since it's a not-installed test file, we don't really need to verify its C++ cleanliness anyway. --- src/interfaces/ecpg/test/expected/compat_informix-dec_test.c | 2 +- src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c | 2 +- src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c | 2 +- src/interfaces/ecpg/test/printf_hack.h | 2 +- src/tools/pginclude/cpluspluscheck | 2 ++ 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c index adef3b6a261..8586650e879 100644 --- a/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c +++ b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c @@ -33,7 +33,7 @@ * print_double(x) has the same effect as printf("%g", x), but is intended * to produce the same formatting across all platforms. */ -static inline void +static void print_double(double x) { #ifdef WIN32 diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c index 85ec13ec6ed..bf312549b4f 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test.c @@ -29,7 +29,7 @@ * print_double(x) has the same effect as printf("%g", x), but is intended * to produce the same formatting across all platforms. */ -static inline void +static void print_double(double x) { #ifdef WIN32 diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c index ebff9ca0359..9debc34e791 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-num_test2.c @@ -30,7 +30,7 @@ * print_double(x) has the same effect as printf("%g", x), but is intended * to produce the same formatting across all platforms. */ -static inline void +static void print_double(double x) { #ifdef WIN32 diff --git a/src/interfaces/ecpg/test/printf_hack.h b/src/interfaces/ecpg/test/printf_hack.h index 1c061d5e87e..ef584c0d548 100644 --- a/src/interfaces/ecpg/test/printf_hack.h +++ b/src/interfaces/ecpg/test/printf_hack.h @@ -2,7 +2,7 @@ * print_double(x) has the same effect as printf("%g", x), but is intended * to produce the same formatting across all platforms. */ -static inline void +static void print_double(double x) { #ifdef WIN32 diff --git a/src/tools/pginclude/cpluspluscheck b/src/tools/pginclude/cpluspluscheck index 38617843665..b3fc75de48a 100755 --- a/src/tools/pginclude/cpluspluscheck +++ b/src/tools/pginclude/cpluspluscheck @@ -105,6 +105,8 @@ do # regression.h is not actually C, but ECPG code. test "$f" = src/interfaces/ecpg/test/regression.h && continue + # printf_hack.h produces "unused function" warnings. + test "$f" = src/interfaces/ecpg/test/printf_hack.h && continue # pg_trace.h and utils/probes.h can include sys/sdt.h from SystemTap, # which itself contains C++ code and so won't compile with a C++