diff options
author | Olly Betts <olly@survex.com> | 2023-04-21 07:38:52 +1200 |
---|---|---|
committer | Olly Betts <olly@survex.com> | 2023-04-21 07:40:25 +1200 |
commit | de4e3b454e23af3f26f8c2ea670482bef738e983 (patch) | |
tree | 33fd3903a69263b03bd0a907c894044c8797087a /Examples | |
parent | 3275331886192da4ce2047d52be91526f5608c4f (diff) | |
download | swig-de4e3b454e23af3f26f8c2ea670482bef738e983.tar.gz |
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
Diffstat (limited to 'Examples')
-rw-r--r-- | Examples/test-suite/preproc_defined.i | 35 |
1 files changed, 35 insertions, 0 deletions
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() |