From de4e3b454e23af3f26f8c2ea670482bef738e983 Mon Sep 17 00:00:00 2001 From: Olly Betts Date: Fri, 21 Apr 2023 07:38:52 +1200 Subject: Fix #ifdef and #ifndef to work inside a %define Previously they were silently ignored in this context (but #if defined already worked here if you need a workaround which works for older versions). Fixes #2183 --- Examples/test-suite/preproc_defined.i | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'Examples') diff --git a/Examples/test-suite/preproc_defined.i b/Examples/test-suite/preproc_defined.i index 9ae884691..f000446c4 100644 --- a/Examples/test-suite/preproc_defined.i +++ b/Examples/test-suite/preproc_defined.i @@ -151,3 +151,38 @@ const int y = 0; #undef y #undef x + +/* Regression test for #ifdef and #ifndef not working inside a %define. + * https://github.com/swig/swig/issues/2183 + */ +#undef THISMACROISNOTDEFINED /* Make sure! */ +#define THISMACROISDEFINED + +%define %test() + +#ifdef THISMACROISNOTDEFINED +# error #ifdef inside percent-define failed +#endif +#ifndef THISMACROISDEFINED +# error #ifndef inside percent-define failed +#endif +/* Check pre-defined macro too. */ +#ifndef SWIG +# error #ifndef inside percent-define failed +#endif + +/* These cases already worked, but should still have test coverage. */ +#if defined THISMACROISNOTDEFINED +# error #if defined inside percent-define failed +#endif +#if !defined THISMACROISDEFINED +# error #if !defined inside percent-define failed +#endif +/* Check pre-defined macro too. */ +#if !defined SWIG +# error #if !defined inside percent-define failed +#endif + +%enddef + +%test() -- cgit v1.2.1